summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/utilities
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2017-01-04 23:03:24 +0000
committerMarshall Clow <mclow.lists@gmail.com>2017-01-04 23:03:24 +0000
commitdbf7ca9ce61faee8b21b53d0d414bf1e939bb881 (patch)
tree50c6fda3c262ff88bd4b08ed9732b6af10242eb9 /libcxx/test/std/utilities
parent19ef4fad91931daff9bb7b592b4c8100d92a9638 (diff)
downloadbcm5719-llvm-dbf7ca9ce61faee8b21b53d0d414bf1e939bb881.tar.gz
bcm5719-llvm-dbf7ca9ce61faee8b21b53d0d414bf1e939bb881.zip
Implement P0505: 'Wording for GB 50'
llvm-svn: 291028
Diffstat (limited to 'libcxx/test/std/utilities')
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp18
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp25
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp21
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp18
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp26
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp19
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp17
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp28
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp17
-rw-r--r--libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp17
10 files changed, 190 insertions, 16 deletions
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp
index 8a8f4b1c0d9..702c38d2d4a 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp
+++ b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++.pass.cpp
@@ -11,15 +11,31 @@
// duration
-// duration& operator++();
+// constexpr duration& operator++(); // constexpr in c++17
#include <chrono>
#include <cassert>
+#include "test_macros.h"
+
+#if TEST_STD_VER > 14
+constexpr bool test_constexpr()
+{
+ std::chrono::hours h(3);
+ return (++h).count() == 4;
+}
+#endif
+
int main()
{
+ {
std::chrono::hours h(3);
std::chrono::hours& href = ++h;
assert(&href == &h);
assert(h.count() == 4);
+ }
+
+#if TEST_STD_VER > 14
+ static_assert(test_constexpr(), "");
+#endif
}
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp
index cf502828100..49b8c76ee8e 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp
+++ b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_++int.pass.cpp
@@ -11,15 +11,32 @@
// duration
-// duration operator++(int);
+// constexpr duration operator++(int); // constexpr in c++17
#include <chrono>
#include <cassert>
+#include "test_macros.h"
+
+#if TEST_STD_VER > 14
+constexpr bool test_constexpr()
+{
+ std::chrono::hours h1(3);
+ std::chrono::hours h2 = h1++;
+ return h1.count() == 4 && h2.count() == 3;
+}
+#endif
+
int main()
{
- std::chrono::hours h(3);
- std::chrono::hours h2 = h++;
- assert(h.count() == 4);
+ {
+ std::chrono::hours h1(3);
+ std::chrono::hours h2 = h1++;
+ assert(h1.count() == 4);
assert(h2.count() == 3);
+ }
+
+#if TEST_STD_VER > 14
+ static_assert(test_constexpr(), "");
+#endif
}
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp
index 8d8cf4539c1..bec8effbe22 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp
+++ b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_+=.pass.cpp
@@ -11,16 +11,35 @@
// duration
-// duration& operator+=(const duration& d);
+// constexpr duration& operator+=(const duration& d); // constexpr in c++17
#include <chrono>
#include <cassert>
+#include "test_macros.h"
+
+#if TEST_STD_VER > 14
+constexpr bool test_constexpr()
+{
+ std::chrono::seconds s(3);
+ s += std::chrono::seconds(2);
+ if (s.count() != 5) return false;
+ s += std::chrono::minutes(2);
+ return s.count() == 125;
+}
+#endif
+
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);
+ }
+
+#if TEST_STD_VER > 14
+ static_assert(test_constexpr(), "");
+#endif
}
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp
index 0aadfbcd599..98b22a7b18b 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp
+++ b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--.pass.cpp
@@ -11,15 +11,31 @@
// duration
-// duration& operator--();
+// constexpr duration& operator--(); // constexpr in C++17
#include <chrono>
#include <cassert>
+#include "test_macros.h"
+
+#if TEST_STD_VER > 14
+constexpr bool test_constexpr()
+{
+ std::chrono::hours h(3);
+ return (--h).count() == 2;
+}
+#endif
+
int main()
{
+ {
std::chrono::hours h(3);
std::chrono::hours& href = --h;
assert(&href == &h);
assert(h.count() == 2);
+ }
+
+#if TEST_STD_VER > 14
+ static_assert(test_constexpr(), "");
+#endif
}
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp
index 7fc6a1df603..a908c44dda8 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp
+++ b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_--int.pass.cpp
@@ -11,15 +11,33 @@
// duration
-// duration operator--(int);
+// constexpr duration operator--(int); // constexpr in C++17
#include <chrono>
#include <cassert>
+#include "test_macros.h"
+
+#if TEST_STD_VER > 14
+constexpr bool test_constexpr()
+{
+ std::chrono::hours h1(3);
+ std::chrono::hours h2 = h1--;
+ return h1.count() == 2 && h2.count() == 3;
+}
+#endif
+
+
int main()
{
- std::chrono::hours h(3);
- std::chrono::hours h2 = h--;
- assert(h.count() == 2);
+ {
+ std::chrono::hours h1(3);
+ std::chrono::hours h2 = h1--;
+ assert(h1.count() == 2);
assert(h2.count() == 3);
+ }
+
+#if TEST_STD_VER > 14
+ static_assert(test_constexpr(), "");
+#endif
}
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp
index a0a7aed202b..185db177882 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp
+++ b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_-=.pass.cpp
@@ -16,11 +16,30 @@
#include <chrono>
#include <cassert>
+#include "test_macros.h"
+
+#if TEST_STD_VER > 14
+constexpr bool test_constexpr()
+{
+ std::chrono::seconds s(3);
+ s -= std::chrono::seconds(2);
+ if (s.count() != 1) return false;
+ s -= std::chrono::minutes(2);
+ return s.count() == -119;
+}
+#endif
+
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);
+ }
+
+#if TEST_STD_VER > 14
+ static_assert(test_constexpr(), "");
+#endif
}
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp
index 09786bcd8cf..4ae774b6c1f 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp
+++ b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_divide=.pass.cpp
@@ -16,9 +16,26 @@
#include <chrono>
#include <cassert>
+#include "test_macros.h"
+
+#if TEST_STD_VER > 14
+constexpr bool test_constexpr()
+{
+ std::chrono::seconds s(15);
+ s /= 5;
+ return s.count() == 3;
+}
+#endif
+
int main()
{
+ {
std::chrono::nanoseconds ns(15);
ns /= 5;
assert(ns.count() == 3);
+ }
+
+#if TEST_STD_VER > 14
+ static_assert(test_constexpr(), "");
+#endif
}
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp
index 8a4a2b47232..62446867124 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp
+++ b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=duration.pass.cpp
@@ -16,12 +16,30 @@
#include <chrono>
#include <cassert>
+#include "test_macros.h"
+
+#if TEST_STD_VER > 14
+constexpr bool test_constexpr()
+{
+ std::chrono::microseconds us1(11);
+ std::chrono::microseconds us2(3);
+ us1 %= us2;
+ return us1.count() == 2;
+}
+#endif
+
int main()
{
- std::chrono::microseconds us(11);
+ {
+ std::chrono::microseconds us1(11);
std::chrono::microseconds us2(3);
- us %= us2;
- assert(us.count() == 2);
- us %= std::chrono::milliseconds(3);
- assert(us.count() == 2);
+ us1 %= us2;
+ assert(us1.count() == 2);
+ us1 %= std::chrono::milliseconds(3);
+ assert(us1.count() == 2);
+ }
+
+#if TEST_STD_VER > 14
+ static_assert(test_constexpr(), "");
+#endif
}
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp
index 8758e17ba6a..a4852d261f7 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp
+++ b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_mod=rep.pass.cpp
@@ -16,9 +16,26 @@
#include <chrono>
#include <cassert>
+#include "test_macros.h"
+
+#if TEST_STD_VER > 14
+constexpr bool test_constexpr()
+{
+ std::chrono::seconds s(11);
+ s %= 3;
+ return s.count() == 2;
+}
+#endif
+
int main()
{
+ {
std::chrono::microseconds us(11);
us %= 3;
assert(us.count() == 2);
+ }
+
+#if TEST_STD_VER > 14
+ static_assert(test_constexpr(), "");
+#endif
}
diff --git a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp
index b97534a3615..0f76788c00e 100644
--- a/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp
+++ b/libcxx/test/std/utilities/time/time.duration/time.duration.arithmetic/op_times=.pass.cpp
@@ -16,9 +16,26 @@
#include <chrono>
#include <cassert>
+#include "test_macros.h"
+
+#if TEST_STD_VER > 14
+constexpr bool test_constexpr()
+{
+ std::chrono::seconds s(3);
+ s *= 5;
+ return s.count() == 15;
+}
+#endif
+
int main()
{
+ {
std::chrono::nanoseconds ns(3);
ns *= 5;
assert(ns.count() == 15);
+ }
+
+#if TEST_STD_VER > 14
+ static_assert(test_constexpr(), "");
+#endif
}
OpenPOWER on IntegriCloud