summaryrefslogtreecommitdiffstats
path: root/libcxx/test/utilities/time/time.duration
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/test/utilities/time/time.duration')
-rw-r--r--libcxx/test/utilities/time/time.duration/default_ratio.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/duration.fail.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/positive_num.fail.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/ratio.fail.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cast/toduration.fail.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cons/convert_float_to_int.fail.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.fail.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cons/default.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cons/rep.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cons/rep01.fail.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.fail.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.cons/rep03.fail.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.fail.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.fail.cpp1
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp26
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp32
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep1.fail.cpp30
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep2.fail.cpp30
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.observer/tested_elsewhere.pass.cpp12
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.special/max.pass.cpp34
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.special/min.pass.cpp34
-rw-r--r--libcxx/test/utilities/time/time.duration/time.duration.special/zero.pass.cpp33
-rw-r--r--libcxx/test/utilities/time/time.duration/types.pass.cpp27
47 files changed, 296 insertions, 0 deletions
diff --git a/libcxx/test/utilities/time/time.duration/default_ratio.pass.cpp b/libcxx/test/utilities/time/time.duration/default_ratio.pass.cpp
new file mode 100644
index 00000000000..5294c69c095
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/default_ratio.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // Test default template arg: // template <class Rep, class Period = ratio<1>> // class duration; #include <chrono> #include <type_traits> int main() { static_assert((std::is_same<std::chrono::duration<int, std::ratio<1> >, std::chrono::duration<int> >::value), ""); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/duration.fail.cpp b/libcxx/test/utilities/time/time.duration/duration.fail.cpp
new file mode 100644
index 00000000000..e28883820c0
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/duration.fail.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // If a program instantiates duration with a duration type for the template // argument Rep a diagnostic is required. #include <chrono> int main() { typedef std::chrono::duration<std::chrono::milliseconds> D; D d; } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/positive_num.fail.cpp b/libcxx/test/utilities/time/time.duration/positive_num.fail.cpp
new file mode 100644
index 00000000000..26e8c0f3b02
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/positive_num.fail.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // Period::num shall be positive, diagnostic required. #include <chrono> int main() { typedef std::chrono::duration<int, std::ratio<5, -1> > D; D d; } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/ratio.fail.cpp b/libcxx/test/utilities/time/time.duration/ratio.fail.cpp
new file mode 100644
index 00000000000..adcc21e8da6
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/ratio.fail.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // Period shall be a specialization of ratio, diagnostic required. #include <chrono> template <int N, int D = 1> class Ratio { public: static const int num = N; static const int den = D; }; int main() { typedef std::chrono::duration<int, Ratio<1> > D; D d; } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp
new file mode 100644
index 00000000000..0be2410eda3
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration& operator++(); #include <chrono> #include <cassert> int main() { std::chrono::hours h(3); std::chrono::hours& href = ++h; assert(&href == &h); assert(h.count() == 4); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp
new file mode 100644
index 00000000000..124ec392052
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration operator++(int); #include <chrono> #include <cassert> int main() { std::chrono::hours h(3); std::chrono::hours h2 = h++; assert(h.count() == 4); assert(h2.count() == 3); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp
new file mode 100644
index 00000000000..2d6f997d8ab
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration operator+() const; #include <chrono> #include <cassert> int main() { const std::chrono::minutes m(3); std::chrono::minutes m2 = +m; assert(m.count() == m2.count()); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp
new file mode 100644
index 00000000000..84c6fadf919
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration& operator+=(const duration& d); #include <chrono> #include <cassert> int main() { std::chrono::seconds s(3); s += std::chrono::seconds(2); assert(s.count() == 5); s += std::chrono::minutes(2); assert(s.count() == 125); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp
new file mode 100644
index 00000000000..5423d6fe273
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration& operator--(); #include <chrono> #include <cassert> int main() { std::chrono::hours h(3); std::chrono::hours& href = --h; assert(&href == &h); assert(h.count() == 2); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp
new file mode 100644
index 00000000000..9fee8c3a9e4
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration operator--(int); #include <chrono> #include <cassert> int main() { std::chrono::hours h(3); std::chrono::hours h2 = h--; assert(h.count() == 2); assert(h2.count() == 3); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp
new file mode 100644
index 00000000000..4df2fcdc56f
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration operator-() const; #include <chrono> #include <cassert> int main() { const std::chrono::minutes m(3); std::chrono::minutes m2 = -m; assert(m2.count() == -m.count()); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp
new file mode 100644
index 00000000000..cb798a47e57
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration& operator-=(const duration& d); #include <chrono> #include <cassert> int main() { std::chrono::seconds s(3); s -= std::chrono::seconds(2); assert(s.count() == 1); s -= std::chrono::minutes(2); assert(s.count() == -119); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp
new file mode 100644
index 00000000000..5fce07acce1
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration& operator/=(const rep& rhs); #include <chrono> #include <cassert> int main() { std::chrono::nanoseconds ns(15); ns /= 5; assert(ns.count() == 3); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp
new file mode 100644
index 00000000000..912b43e74aa
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration& operator%=(const duration& rhs) #include <chrono> #include <cassert> int main() { std::chrono::microseconds us(11); std::chrono::microseconds us2(3); us %= us2; assert(us.count() == 2); us %= std::chrono::milliseconds(3); assert(us.count() == 2); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp
new file mode 100644
index 00000000000..b8a7930dd2b
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration& operator%=(const rep& rhs) #include <chrono> #include <cassert> int main() { std::chrono::microseconds us(11); us %= 3; assert(us.count() == 2); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp
new file mode 100644
index 00000000000..1cd89251d8c
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration& operator*=(const rep& rhs); #include <chrono> #include <cassert> int main() { std::chrono::nanoseconds ns(3); ns *= 5; assert(ns.count() == 15); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp
new file mode 100644
index 00000000000..a972949a784
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cast/duration_cast.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class ToDuration, class Rep, class Period> // ToDuration // duration_cast(const duration<Rep, Period>& d); #include <chrono> #include <type_traits> #include <cassert> template <class ToDuration, class FromDuration> void test(const FromDuration& f, const ToDuration& d) { typedef decltype(std::chrono::duration_cast<ToDuration>(f)) R; static_assert((std::is_same<R, ToDuration>::value), ""); assert(std::chrono::duration_cast<ToDuration>(f) == d); } int main() { test(std::chrono::milliseconds(7265000), std::chrono::hours(2)); test(std::chrono::milliseconds(7265000), std::chrono::minutes(121)); test(std::chrono::milliseconds(7265000), std::chrono::seconds(7265)); test(std::chrono::milliseconds(7265000), std::chrono::milliseconds(7265000)); test(std::chrono::milliseconds(7265000), std::chrono::microseconds(7265000000LL)); test(std::chrono::milliseconds(7265000), std::chrono::nanoseconds(7265000000000LL)); test(std::chrono::milliseconds(7265000), std::chrono::duration<double, std::ratio<3600> >(7265./3600)); test(std::chrono::duration<int, std::ratio<2, 3> >(9), std::chrono::duration<int, std::ratio<3, 5> >(10)); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cast/toduration.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cast/toduration.fail.cpp
new file mode 100644
index 00000000000..e9f2a484143
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cast/toduration.fail.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class ToDuration, class Rep, class Period> // ToDuration // duration_cast(const duration<Rep, Period>& d); // ToDuration shall be an instantiation of duration. #include <chrono> int main() { std::chrono::duration_cast<int>(std::chrono::milliseconds(3)); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp
new file mode 100644
index 00000000000..c7d2269eecf
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_equal.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep1, class Period1, class Rep2, class Period2> // bool // operator==(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); // template <class Rep1, class Period1, class Rep2, class Period2> // bool // operator!=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); #include <chrono> #include <cassert> int main() { { std::chrono::seconds s1(3); std::chrono::seconds s2(3); assert(s1 == s2); assert(!(s1 != s2)); } { std::chrono::seconds s1(3); std::chrono::seconds s2(4); assert(!(s1 == s2)); assert(s1 != s2); } { std::chrono::milliseconds s1(3); std::chrono::microseconds s2(3000); assert(s1 == s2); assert(!(s1 != s2)); } { std::chrono::milliseconds s1(3); std::chrono::microseconds s2(4000); assert(!(s1 == s2)); assert(s1 != s2); } { std::chrono::duration<int, std::ratio<2, 3> > s1(9); std::chrono::duration<int, std::ratio<3, 5> > s2(10); assert(s1 == s2); assert(!(s1 != s2)); } { std::chrono::duration<int, std::ratio<2, 3> > s1(10); std::chrono::duration<int, std::ratio<3, 5> > s2(9); assert(!(s1 == s2)); assert(s1 != s2); } { std::chrono::duration<int, std::ratio<2, 3> > s1(9); std::chrono::duration<double, std::ratio<3, 5> > s2(10); assert(s1 == s2); assert(!(s1 != s2)); } } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp
new file mode 100644
index 00000000000..f477f424f9f
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.comparisons/op_less.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep1, class Period1, class Rep2, class Period2> // bool // operator< (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); // template <class Rep1, class Period1, class Rep2, class Period2> // bool // operator> (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); // template <class Rep1, class Period1, class Rep2, class Period2> // bool // operator<=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); // template <class Rep1, class Period1, class Rep2, class Period2> // bool // operator>=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); #include <chrono> #include <cassert> int main() { { std::chrono::seconds s1(3); std::chrono::seconds s2(3); assert(!(s1 < s2)); assert(!(s1 > s2)); assert( (s1 <= s2)); assert( (s1 >= s2)); } { std::chrono::seconds s1(3); std::chrono::seconds s2(4); assert( (s1 < s2)); assert(!(s1 > s2)); assert( (s1 <= s2)); assert(!(s1 >= s2)); } { std::chrono::milliseconds s1(3); std::chrono::microseconds s2(3000); assert(!(s1 < s2)); assert(!(s1 > s2)); assert( (s1 <= s2)); assert( (s1 >= s2)); } { std::chrono::milliseconds s1(3); std::chrono::microseconds s2(4000); assert( (s1 < s2)); assert(!(s1 > s2)); assert( (s1 <= s2)); assert(!(s1 >= s2)); } { std::chrono::duration<int, std::ratio<2, 3> > s1(9); std::chrono::duration<int, std::ratio<3, 5> > s2(10); assert(!(s1 < s2)); assert(!(s1 > s2)); assert( (s1 <= s2)); assert( (s1 >= s2)); } { std::chrono::duration<int, std::ratio<2, 3> > s1(10); std::chrono::duration<int, std::ratio<3, 5> > s2(9); assert(!(s1 < s2)); assert( (s1 > s2)); assert(!(s1 <= s2)); assert( (s1 >= s2)); } { std::chrono::duration<int, std::ratio<2, 3> > s1(9); std::chrono::duration<double, std::ratio<3, 5> > s2(10); assert(!(s1 < s2)); assert(!(s1 > s2)); assert( (s1 <= s2)); assert( (s1 >= s2)); } } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp
new file mode 100644
index 00000000000..318f336e48d
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_exact.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep2, class Period2> // duration(const duration<Rep2, Period2>& d); // exact conversions allowed for integral reps #include <chrono> #include <cassert> int main() { std::chrono::milliseconds ms(1); std::chrono::microseconds us = ms; assert(us.count() == 1000); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_float_to_int.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_float_to_int.fail.cpp
new file mode 100644
index 00000000000..42b02ac38d0
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_float_to_int.fail.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep2, class Period2> // duration(const duration<Rep2, Period2>& d); // conversions from floating point to integral durations disallowed #include <chrono> int main() { std::chrono::duration<double> d; std::chrono::duration<int> i = d; } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.fail.cpp
new file mode 100644
index 00000000000..dc5bde48685
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.fail.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep2, class Period2> // duration(const duration<Rep2, Period2>& d); // inexact conversions disallowed for integral reps #include <chrono> int main() { std::chrono::microseconds us(1); std::chrono::milliseconds ms = us; } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp
new file mode 100644
index 00000000000..0539ab072d4
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_inexact.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep2, class Period2> // duration(const duration<Rep2, Period2>& d); // inexact conversions allowed for floating point reps #include <chrono> #include <cassert> int main() { std::chrono::duration<double, std::micro> us(1); std::chrono::duration<double, std::milli> ms = us; assert(ms.count() == 1./1000); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp
new file mode 100644
index 00000000000..43f026de656
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/convert_int_to_float.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep2, class Period2> // duration(const duration<Rep2, Period2>& d); // conversions from integral to floating point durations allowed #include <chrono> #include <cassert> int main() { std::chrono::duration<int> i(3); std::chrono::duration<int> d = i; assert(d.count() == 3); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/default.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/default.pass.cpp
new file mode 100644
index 00000000000..1dd7c5e29c3
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/default.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // duration() = default; // Rep must be default initialized, not initialized with 0 #include <chrono> #include <cassert> #include "../../rep.h" template <class D> void test() { D d; assert(d.count() == typename D::rep()); } int main() { test<std::chrono::duration<Rep> >(); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep.pass.cpp
new file mode 100644
index 00000000000..eea99f563f9
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep2> // explicit duration(const Rep2& r); #include <chrono> #include <cassert> #include "../../rep.h" template <class D, class R> void test(R r) { D d(r); assert(d.count() == r); } int main() { test<std::chrono::duration<int> >(5); test<std::chrono::duration<int, std::ratio<3, 2> > >(5); test<std::chrono::duration<Rep, std::ratio<3, 2> > >(Rep(3)); test<std::chrono::duration<double, std::ratio<2, 3> > >(5.5); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep01.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep01.fail.cpp
new file mode 100644
index 00000000000..435091ef277
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep01.fail.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep2> // explicit duration(const Rep2& r); // test for explicit #include <chrono> #include "../../rep.h" int main() { std::chrono::duration<int> d = 1; } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.fail.cpp
new file mode 100644
index 00000000000..8fa3d038568
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.fail.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep2> // explicit duration(const Rep2& r); // Rep2 shall be implicitly convertible to rep #include <chrono> #include "../../rep.h" int main() { std::chrono::duration<Rep> d(1); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp
new file mode 100644
index 00000000000..2e63a34e042
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep02.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep2> // explicit duration(const Rep2& r); // construct double with int #include <chrono> #include <cassert> int main() { std::chrono::duration<double> d(5); assert(d.count() == 5); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.cons/rep03.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep03.fail.cpp
new file mode 100644
index 00000000000..10b44d0e8a9
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.cons/rep03.fail.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep2> // explicit duration(const Rep2& r); // treat_as_floating_point<Rep2>::value shall be false #include <chrono> int main() { std::chrono::duration<int> d(1.); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp
new file mode 100644
index 00000000000..4979b156aa1
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_+.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep1, class Period1, class Rep2, class Period2> // typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type // operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); #include <chrono> #include <cassert> int main() { { std::chrono::seconds s1(3); std::chrono::seconds s2(5); std::chrono::seconds r = s1 + s2; assert(r.count() == 8); } { std::chrono::seconds s1(3); std::chrono::microseconds s2(5); std::chrono::microseconds r = s1 + s2; assert(r.count() == 3000005); } { std::chrono::duration<int, std::ratio<2, 3> > s1(3); std::chrono::duration<int, std::ratio<3, 5> > s2(5); std::chrono::duration<int, std::ratio<1, 15> > r = s1 + s2; assert(r.count() == 75); } { std::chrono::duration<int, std::ratio<2, 3> > s1(3); std::chrono::duration<double, std::ratio<3, 5> > s2(5); std::chrono::duration<double, std::ratio<1, 15> > r = s1 + s2; assert(r.count() == 75); } } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp
new file mode 100644
index 00000000000..b349cf56fbe
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_-.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep1, class Period1, class Rep2, class Period2> // typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type // operator-(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); #include <chrono> #include <cassert> int main() { { std::chrono::seconds s1(3); std::chrono::seconds s2(5); std::chrono::seconds r = s1 - s2; assert(r.count() == -2); } { std::chrono::seconds s1(3); std::chrono::microseconds s2(5); std::chrono::microseconds r = s1 - s2; assert(r.count() == 2999995); } { std::chrono::duration<int, std::ratio<2, 3> > s1(3); std::chrono::duration<int, std::ratio<3, 5> > s2(5); std::chrono::duration<int, std::ratio<1, 15> > r = s1 - s2; assert(r.count() == -15); } { std::chrono::duration<int, std::ratio<2, 3> > s1(3); std::chrono::duration<double, std::ratio<3, 5> > s2(5); std::chrono::duration<double, std::ratio<1, 15> > r = s1 - s2; assert(r.count() == -15); } } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp
new file mode 100644
index 00000000000..181fc6a1cdb
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_duration.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep1, class Period1, class Rep2, class Period2> // typename common_type<Rep1, Rep2>::type // operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); #include <chrono> #include <cassert> int main() { { std::chrono::nanoseconds ns1(15); std::chrono::nanoseconds ns2(5); assert(ns1 / ns2 == 3); } { std::chrono::microseconds us1(15); std::chrono::nanoseconds ns2(5); assert(us1 / ns2 == 3000); } { std::chrono::duration<int, std::ratio<2, 3> > s1(30); std::chrono::duration<int, std::ratio<3, 5> > s2(5); assert(s1 / s2 == 6); } { std::chrono::duration<int, std::ratio<2, 3> > s1(30); std::chrono::duration<double, std::ratio<3, 5> > s2(5); assert(s1 / s2 == 20./3); } } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.fail.cpp
new file mode 100644
index 00000000000..2ce8069428d
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.fail.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep1, class Period, class Rep2> // duration<typename common_type<Rep1, Rep2>::type, Period> // operator/(const duration<Rep1, Period>& d, const Rep2& s); #include <chrono> #include "../../rep.h" int main() { std::chrono::duration<Rep> d(Rep(15)); d = d / 5; } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp
new file mode 100644
index 00000000000..a010c57084d
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_divide_rep.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep1, class Period, class Rep2> // duration<typename common_type<Rep1, Rep2>::type, Period> // operator/(const duration<Rep1, Period>& d, const Rep2& s); #include <chrono> #include <cassert> int main() { std::chrono::nanoseconds ns(15); ns = ns / 5; assert(ns.count() == 3); } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp
new file mode 100644
index 00000000000..5b428e3961c
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_duration.pass.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep1, class Period1, class Rep2, class Period2> // typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2>>::type // operator%(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); #include <chrono> #include <cassert> int main() { { std::chrono::nanoseconds ns1(15); std::chrono::nanoseconds ns2(6); std::chrono::nanoseconds r = ns1 % ns2; assert(r.count() == 3); } { std::chrono::microseconds us1(15); std::chrono::nanoseconds ns2(28); std::chrono::nanoseconds r = us1 % ns2; assert(r.count() == 20); } { std::chrono::duration<int, std::ratio<3, 5> > s1(6); std::chrono::duration<int, std::ratio<2, 3> > s2(3); std::chrono::duration<int, std::ratio<1, 15> > r = s1 % s2; assert(r.count() == 24); } } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.fail.cpp
new file mode 100644
index 00000000000..c7b63575956
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.fail.cpp
@@ -0,0 +1 @@
+//===----------------------------------------------------------------------===// // // ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // <chrono> // duration // template <class Rep1, class Period, class Rep2> // duration<typename common_type<Rep1, Rep2>::type, Period> // operator%(const duration<Rep1, Period>& d, const Rep2& s) #include <chrono> #include "../../rep.h" int main() { std::chrono::duration<Rep> d(Rep(15)); d = d % 5; } \ No newline at end of file
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp
new file mode 100644
index 00000000000..98c4eb725f5
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_mod_rep.pass.cpp
@@ -0,0 +1,26 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <chrono>
+
+// duration
+
+// template <class Rep1, class Period, class Rep2>
+// duration<typename common_type<Rep1, Rep2>::type, Period>
+// operator%(const duration<Rep1, Period>& d, const Rep2& s)
+
+#include <chrono>
+#include <cassert>
+
+int main()
+{
+ std::chrono::nanoseconds ns(15);
+ ns = ns % 6;
+ assert(ns.count() == 3);
+}
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp
new file mode 100644
index 00000000000..4240134bcb2
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep.pass.cpp
@@ -0,0 +1,32 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <chrono>
+
+// duration
+
+// template <class Rep1, class Period, class Rep2>
+// duration<typename common_type<Rep1, Rep2>::type, Period>
+// operator*(const duration<Rep1, Period>& d, const Rep2& s);
+
+// template <class Rep1, class Period, class Rep2>
+// duration<typename common_type<Rep1, Rep2>::type, Period>
+// operator*(const Rep1& s, const duration<Rep2, Period>& d);
+
+#include <chrono>
+#include <cassert>
+
+int main()
+{
+ std::chrono::nanoseconds ns(3);
+ ns = ns * 5;
+ assert(ns.count() == 15);
+ ns = 6 * ns;
+ assert(ns.count() == 90);
+}
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep1.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep1.fail.cpp
new file mode 100644
index 00000000000..45d6a3eb02d
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep1.fail.cpp
@@ -0,0 +1,30 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <chrono>
+
+// duration
+
+// template <class Rep1, class Period, class Rep2>
+// duration<typename common_type<Rep1, Rep2>::type, Period>
+// operator*(const duration<Rep1, Period>& d, const Rep2& s);
+
+// template <class Rep1, class Period, class Rep2>
+// duration<typename common_type<Rep1, Rep2>::type, Period>
+// operator*(const Rep1& s, const duration<Rep2, Period>& d);
+
+#include <chrono>
+
+#include "../../rep.h"
+
+int main()
+{
+ std::chrono::duration<Rep> d;
+ d = d * 5;
+}
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep2.fail.cpp b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep2.fail.cpp
new file mode 100644
index 00000000000..e2134fb5c4f
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.nonmember/op_times_rep2.fail.cpp
@@ -0,0 +1,30 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <chrono>
+
+// duration
+
+// template <class Rep1, class Period, class Rep2>
+// duration<typename common_type<Rep1, Rep2>::type, Period>
+// operator*(const duration<Rep1, Period>& d, const Rep2& s);
+
+// template <class Rep1, class Period, class Rep2>
+// duration<typename common_type<Rep1, Rep2>::type, Period>
+// operator*(const Rep1& s, const duration<Rep2, Period>& d);
+
+#include <chrono>
+
+#include "../../rep.h"
+
+int main()
+{
+ std::chrono::duration<Rep> d;
+ d = 5 * d;
+}
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.observer/tested_elsewhere.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.observer/tested_elsewhere.pass.cpp
new file mode 100644
index 00000000000..fa4d462f18d
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.observer/tested_elsewhere.pass.cpp
@@ -0,0 +1,12 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+int main()
+{
+}
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.special/max.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.special/max.pass.cpp
new file mode 100644
index 00000000000..2cedbf87371
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.special/max.pass.cpp
@@ -0,0 +1,34 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <chrono>
+
+// duration
+
+// static constexpr duration max();
+
+#include <chrono>
+#include <limits>
+#include <cassert>
+
+#include "../../rep.h"
+
+template <class D>
+void test()
+{
+ typedef typename D::rep Rep;
+ Rep max_rep = std::chrono::duration_values<Rep>::max();
+ assert(D::max().count() == max_rep);
+}
+
+int main()
+{
+ test<std::chrono::duration<int> >();
+ test<std::chrono::duration<Rep> >();
+}
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.special/min.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.special/min.pass.cpp
new file mode 100644
index 00000000000..827bd067c42
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.special/min.pass.cpp
@@ -0,0 +1,34 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <chrono>
+
+// duration
+
+// static constexpr duration min();
+
+#include <chrono>
+#include <limits>
+#include <cassert>
+
+#include "../../rep.h"
+
+template <class D>
+void test()
+{
+ typedef typename D::rep Rep;
+ Rep min_rep = std::chrono::duration_values<Rep>::min();
+ assert(D::min().count() == min_rep);
+}
+
+int main()
+{
+ test<std::chrono::duration<int> >();
+ test<std::chrono::duration<Rep> >();
+}
diff --git a/libcxx/test/utilities/time/time.duration/time.duration.special/zero.pass.cpp b/libcxx/test/utilities/time/time.duration/time.duration.special/zero.pass.cpp
new file mode 100644
index 00000000000..1ee11bdd7e6
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/time.duration.special/zero.pass.cpp
@@ -0,0 +1,33 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <chrono>
+
+// duration
+
+// static constexpr duration zero();
+
+#include <chrono>
+#include <cassert>
+
+#include "../../rep.h"
+
+template <class D>
+void test()
+{
+ typedef typename D::rep Rep;
+ Rep zero_rep = std::chrono::duration_values<Rep>::zero();
+ assert(D::zero().count() == zero_rep);
+}
+
+int main()
+{
+ test<std::chrono::duration<int> >();
+ test<std::chrono::duration<Rep> >();
+}
diff --git a/libcxx/test/utilities/time/time.duration/types.pass.cpp b/libcxx/test/utilities/time/time.duration/types.pass.cpp
new file mode 100644
index 00000000000..ab423178d57
--- /dev/null
+++ b/libcxx/test/utilities/time/time.duration/types.pass.cpp
@@ -0,0 +1,27 @@
+//===----------------------------------------------------------------------===//
+//
+// ΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚΚThe LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+// <chrono>
+
+// duration
+
+// Test nested types
+
+// typedef Rep rep;
+// typedef Period period;
+
+#include <chrono>
+#include <type_traits>
+
+int main()
+{
+ typedef std::chrono::duration<long, std::ratio<3, 2> > D;
+ static_assert((std::is_same<D::rep, long>::value), "");
+ static_assert((std::is_same<D::period, std::ratio<3, 2> >::value), "");
+}
OpenPOWER on IntegriCloud