diff options
Diffstat (limited to 'libcxx/test/std/algorithms/alg.modifying.operations/alg.copy')
4 files changed, 164 insertions, 181 deletions
diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp index 9dcace7a03d..cc99859d8a7 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp @@ -18,21 +18,9 @@ #include "test_macros.h" #include "test_iterators.h" -// #if TEST_STD_VER > 17 -// TEST_CONSTEXPR bool test_constexpr() { -// int ia[] = {1, 2, 3, 4, 5}; -// int ic[] = {6, 6, 6, 6, 6, 6, 6}; -// -// auto p = std::copy(std::begin(ia), std::end(ia), std::begin(ic)); -// return std::equal(std::begin(ia), std::end(ia), std::begin(ic), p) -// && std::all_of(p, std::end(ic), [](int a){return a == 6;}) -// ; -// } -// #endif - template <class InIter, class OutIter> -void -test() +TEST_CONSTEXPR_CXX20 void +test_copy() { const unsigned N = 1000; int ia[N]; @@ -46,46 +34,54 @@ test() assert(ia[i] == ib[i]); } -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool +test() { - test<input_iterator<const int*>, output_iterator<int*> >(); - test<input_iterator<const int*>, input_iterator<int*> >(); - test<input_iterator<const int*>, forward_iterator<int*> >(); - test<input_iterator<const int*>, bidirectional_iterator<int*> >(); - test<input_iterator<const int*>, random_access_iterator<int*> >(); - test<input_iterator<const int*>, int*>(); + test_copy<input_iterator<const int*>, output_iterator<int*> >(); + test_copy<input_iterator<const int*>, input_iterator<int*> >(); + test_copy<input_iterator<const int*>, forward_iterator<int*> >(); + test_copy<input_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy<input_iterator<const int*>, random_access_iterator<int*> >(); + test_copy<input_iterator<const int*>, int*>(); - test<forward_iterator<const int*>, output_iterator<int*> >(); - test<forward_iterator<const int*>, input_iterator<int*> >(); - test<forward_iterator<const int*>, forward_iterator<int*> >(); - test<forward_iterator<const int*>, bidirectional_iterator<int*> >(); - test<forward_iterator<const int*>, random_access_iterator<int*> >(); - test<forward_iterator<const int*>, int*>(); + test_copy<forward_iterator<const int*>, output_iterator<int*> >(); + test_copy<forward_iterator<const int*>, input_iterator<int*> >(); + test_copy<forward_iterator<const int*>, forward_iterator<int*> >(); + test_copy<forward_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy<forward_iterator<const int*>, random_access_iterator<int*> >(); + test_copy<forward_iterator<const int*>, int*>(); - test<bidirectional_iterator<const int*>, output_iterator<int*> >(); - test<bidirectional_iterator<const int*>, input_iterator<int*> >(); - test<bidirectional_iterator<const int*>, forward_iterator<int*> >(); - test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); - test<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); - test<bidirectional_iterator<const int*>, int*>(); + test_copy<bidirectional_iterator<const int*>, output_iterator<int*> >(); + test_copy<bidirectional_iterator<const int*>, input_iterator<int*> >(); + test_copy<bidirectional_iterator<const int*>, forward_iterator<int*> >(); + test_copy<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); + test_copy<bidirectional_iterator<const int*>, int*>(); - test<random_access_iterator<const int*>, output_iterator<int*> >(); - test<random_access_iterator<const int*>, input_iterator<int*> >(); - test<random_access_iterator<const int*>, forward_iterator<int*> >(); - test<random_access_iterator<const int*>, bidirectional_iterator<int*> >(); - test<random_access_iterator<const int*>, random_access_iterator<int*> >(); - test<random_access_iterator<const int*>, int*>(); + test_copy<random_access_iterator<const int*>, output_iterator<int*> >(); + test_copy<random_access_iterator<const int*>, input_iterator<int*> >(); + test_copy<random_access_iterator<const int*>, forward_iterator<int*> >(); + test_copy<random_access_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy<random_access_iterator<const int*>, random_access_iterator<int*> >(); + test_copy<random_access_iterator<const int*>, int*>(); - test<const int*, output_iterator<int*> >(); - test<const int*, input_iterator<int*> >(); - test<const int*, forward_iterator<int*> >(); - test<const int*, bidirectional_iterator<int*> >(); - test<const int*, random_access_iterator<int*> >(); - test<const int*, int*>(); + test_copy<const int*, output_iterator<int*> >(); + test_copy<const int*, input_iterator<int*> >(); + test_copy<const int*, forward_iterator<int*> >(); + test_copy<const int*, bidirectional_iterator<int*> >(); + test_copy<const int*, random_access_iterator<int*> >(); + test_copy<const int*, int*>(); + + return true; +} + +int main(int, char**) +{ + test(); -// #if TEST_STD_VER > 17 -// static_assert(test_constexpr()); -// #endif +#if TEST_STD_VER > 17 + static_assert(test()); +#endif return 0; } diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp index 2f012d57252..0678257b4f6 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp @@ -20,22 +20,9 @@ #include "test_iterators.h" #include "user_defined_integral.h" -// #if TEST_STD_VER > 17 -// TEST_CONSTEXPR bool test_constexpr() { -// int ia[] = {1, 2, 3, 4, 5}; -// int ic[] = {6, 6, 6, 6, 6, 6, 6}; -// -// size_t N = std::size(ia); -// auto p = std::copy_backward(std::begin(ia), std::end(ia), std::begin(ic) + N); -// return std::equal(std::begin(ic), p, std::begin(ia)) -// && std::all_of(p, std::end(ic), [](int a){return a == 6;}) -// ; -// } -// #endif - template <class InIter, class OutIter> -void -test() +TEST_CONSTEXPR_CXX20 void +test_copy_backward() { const unsigned N = 1000; int ia[N]; @@ -49,23 +36,31 @@ test() assert(ia[i] == ib[i]); } -int main(int, char**) +TEST_CONSTEXPR_CXX20 bool +test() { - test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); - test<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); - test<bidirectional_iterator<const int*>, int*>(); + test_copy_backward<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_backward<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_backward<bidirectional_iterator<const int*>, int*>(); - test<random_access_iterator<const int*>, bidirectional_iterator<int*> >(); - test<random_access_iterator<const int*>, random_access_iterator<int*> >(); - test<random_access_iterator<const int*>, int*>(); + test_copy_backward<random_access_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_backward<random_access_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_backward<random_access_iterator<const int*>, int*>(); - test<const int*, bidirectional_iterator<int*> >(); - test<const int*, random_access_iterator<int*> >(); - test<const int*, int*>(); + test_copy_backward<const int*, bidirectional_iterator<int*> >(); + test_copy_backward<const int*, random_access_iterator<int*> >(); + test_copy_backward<const int*, int*>(); + + return true; +} + +int main(int, char**) +{ + test(); -// #if TEST_STD_VER > 17 -// static_assert(test_constexpr()); -// #endif +#if TEST_STD_VER > 17 + static_assert(test()); +#endif return 0; } diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp index 903bcbe6c25..407e18f2a9e 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_if.pass.cpp @@ -20,26 +20,14 @@ #include "test_macros.h" #include "test_iterators.h" -// #if TEST_STD_VER > 17 -// TEST_CONSTEXPR bool test_constexpr() { -// int ia[] = {2, 4, 6, 8, 6}; -// int ic[] = {0, 0, 0, 0, 0, 0}; -// -// auto p = std::copy_if(std::begin(ia), std::end(ia), std::begin(ic), is6); -// return std::all_of(std::begin(ic), p, [](int a){return a == 6;}) -// && std::all_of(p, std::end(ic), [](int a){return a == 0;}) -// ; -// } -// #endif - struct Pred { - bool operator()(int i) {return i % 3 == 0;} + TEST_CONSTEXPR_CXX14 bool operator()(int i) {return i % 3 == 0;} }; template <class InIter, class OutIter> -void -test() +TEST_CONSTEXPR_CXX20 void +test_copy_if() { const unsigned N = 1000; int ia[N]; @@ -53,46 +41,54 @@ test() assert(ib[i] % 3 == 0); } +TEST_CONSTEXPR_CXX20 bool +test() +{ + test_copy_if<input_iterator<const int*>, output_iterator<int*> >(); + test_copy_if<input_iterator<const int*>, input_iterator<int*> >(); + test_copy_if<input_iterator<const int*>, forward_iterator<int*> >(); + test_copy_if<input_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_if<input_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_if<input_iterator<const int*>, int*>(); + + test_copy_if<forward_iterator<const int*>, output_iterator<int*> >(); + test_copy_if<forward_iterator<const int*>, input_iterator<int*> >(); + test_copy_if<forward_iterator<const int*>, forward_iterator<int*> >(); + test_copy_if<forward_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_if<forward_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_if<forward_iterator<const int*>, int*>(); + + test_copy_if<bidirectional_iterator<const int*>, output_iterator<int*> >(); + test_copy_if<bidirectional_iterator<const int*>, input_iterator<int*> >(); + test_copy_if<bidirectional_iterator<const int*>, forward_iterator<int*> >(); + test_copy_if<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_if<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_if<bidirectional_iterator<const int*>, int*>(); + + test_copy_if<random_access_iterator<const int*>, output_iterator<int*> >(); + test_copy_if<random_access_iterator<const int*>, input_iterator<int*> >(); + test_copy_if<random_access_iterator<const int*>, forward_iterator<int*> >(); + test_copy_if<random_access_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_if<random_access_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_if<random_access_iterator<const int*>, int*>(); + + test_copy_if<const int*, output_iterator<int*> >(); + test_copy_if<const int*, input_iterator<int*> >(); + test_copy_if<const int*, forward_iterator<int*> >(); + test_copy_if<const int*, bidirectional_iterator<int*> >(); + test_copy_if<const int*, random_access_iterator<int*> >(); + test_copy_if<const int*, int*>(); + + return true; +} + int main(int, char**) { - test<input_iterator<const int*>, output_iterator<int*> >(); - test<input_iterator<const int*>, input_iterator<int*> >(); - test<input_iterator<const int*>, forward_iterator<int*> >(); - test<input_iterator<const int*>, bidirectional_iterator<int*> >(); - test<input_iterator<const int*>, random_access_iterator<int*> >(); - test<input_iterator<const int*>, int*>(); - - test<forward_iterator<const int*>, output_iterator<int*> >(); - test<forward_iterator<const int*>, input_iterator<int*> >(); - test<forward_iterator<const int*>, forward_iterator<int*> >(); - test<forward_iterator<const int*>, bidirectional_iterator<int*> >(); - test<forward_iterator<const int*>, random_access_iterator<int*> >(); - test<forward_iterator<const int*>, int*>(); - - test<bidirectional_iterator<const int*>, output_iterator<int*> >(); - test<bidirectional_iterator<const int*>, input_iterator<int*> >(); - test<bidirectional_iterator<const int*>, forward_iterator<int*> >(); - test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); - test<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); - test<bidirectional_iterator<const int*>, int*>(); - - test<random_access_iterator<const int*>, output_iterator<int*> >(); - test<random_access_iterator<const int*>, input_iterator<int*> >(); - test<random_access_iterator<const int*>, forward_iterator<int*> >(); - test<random_access_iterator<const int*>, bidirectional_iterator<int*> >(); - test<random_access_iterator<const int*>, random_access_iterator<int*> >(); - test<random_access_iterator<const int*>, int*>(); - - test<const int*, output_iterator<int*> >(); - test<const int*, input_iterator<int*> >(); - test<const int*, forward_iterator<int*> >(); - test<const int*, bidirectional_iterator<int*> >(); - test<const int*, random_access_iterator<int*> >(); - test<const int*, int*>(); - -// #if TEST_STD_VER > 17 -// static_assert(test_constexpr()); -// #endif + test(); + +#if TEST_STD_VER > 17 + static_assert(test()); +#endif return 0; } diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp index 027dedcdc9b..179e4f1bb34 100644 --- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp +++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_n.pass.cpp @@ -19,23 +19,11 @@ #include "test_iterators.h" #include "user_defined_integral.h" -// #if TEST_STD_VER > 17 -// TEST_CONSTEXPR bool test_constexpr() { -// int ia[] = {1, 2, 3, 4, 5}; -// int ic[] = {6, 6, 6, 6, 6, 6, 6}; -// -// auto p = std::copy_n(std::begin(ia), 4, std::begin(ic)); -// return std::equal(std::begin(ic), p, std::begin(ia)) -// && std::all_of(p, std::end(ic), [](int a){return a == 6;}) -// ; -// } -// #endif - typedef UserDefinedIntegral<unsigned> UDI; template <class InIter, class OutIter> -void -test() +TEST_CONSTEXPR_CXX20 void +test_copy_n() { const unsigned N = 1000; int ia[N]; @@ -49,46 +37,54 @@ test() assert(ia[i] == ib[i]); } +TEST_CONSTEXPR_CXX20 bool +test() +{ + test_copy_n<input_iterator<const int*>, output_iterator<int*> >(); + test_copy_n<input_iterator<const int*>, input_iterator<int*> >(); + test_copy_n<input_iterator<const int*>, forward_iterator<int*> >(); + test_copy_n<input_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_n<input_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_n<input_iterator<const int*>, int*>(); + + test_copy_n<forward_iterator<const int*>, output_iterator<int*> >(); + test_copy_n<forward_iterator<const int*>, input_iterator<int*> >(); + test_copy_n<forward_iterator<const int*>, forward_iterator<int*> >(); + test_copy_n<forward_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_n<forward_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_n<forward_iterator<const int*>, int*>(); + + test_copy_n<bidirectional_iterator<const int*>, output_iterator<int*> >(); + test_copy_n<bidirectional_iterator<const int*>, input_iterator<int*> >(); + test_copy_n<bidirectional_iterator<const int*>, forward_iterator<int*> >(); + test_copy_n<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_n<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_n<bidirectional_iterator<const int*>, int*>(); + + test_copy_n<random_access_iterator<const int*>, output_iterator<int*> >(); + test_copy_n<random_access_iterator<const int*>, input_iterator<int*> >(); + test_copy_n<random_access_iterator<const int*>, forward_iterator<int*> >(); + test_copy_n<random_access_iterator<const int*>, bidirectional_iterator<int*> >(); + test_copy_n<random_access_iterator<const int*>, random_access_iterator<int*> >(); + test_copy_n<random_access_iterator<const int*>, int*>(); + + test_copy_n<const int*, output_iterator<int*> >(); + test_copy_n<const int*, input_iterator<int*> >(); + test_copy_n<const int*, forward_iterator<int*> >(); + test_copy_n<const int*, bidirectional_iterator<int*> >(); + test_copy_n<const int*, random_access_iterator<int*> >(); + test_copy_n<const int*, int*>(); + + return true; +} + int main(int, char**) { - test<input_iterator<const int*>, output_iterator<int*> >(); - test<input_iterator<const int*>, input_iterator<int*> >(); - test<input_iterator<const int*>, forward_iterator<int*> >(); - test<input_iterator<const int*>, bidirectional_iterator<int*> >(); - test<input_iterator<const int*>, random_access_iterator<int*> >(); - test<input_iterator<const int*>, int*>(); - - test<forward_iterator<const int*>, output_iterator<int*> >(); - test<forward_iterator<const int*>, input_iterator<int*> >(); - test<forward_iterator<const int*>, forward_iterator<int*> >(); - test<forward_iterator<const int*>, bidirectional_iterator<int*> >(); - test<forward_iterator<const int*>, random_access_iterator<int*> >(); - test<forward_iterator<const int*>, int*>(); - - test<bidirectional_iterator<const int*>, output_iterator<int*> >(); - test<bidirectional_iterator<const int*>, input_iterator<int*> >(); - test<bidirectional_iterator<const int*>, forward_iterator<int*> >(); - test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >(); - test<bidirectional_iterator<const int*>, random_access_iterator<int*> >(); - test<bidirectional_iterator<const int*>, int*>(); - - test<random_access_iterator<const int*>, output_iterator<int*> >(); - test<random_access_iterator<const int*>, input_iterator<int*> >(); - test<random_access_iterator<const int*>, forward_iterator<int*> >(); - test<random_access_iterator<const int*>, bidirectional_iterator<int*> >(); - test<random_access_iterator<const int*>, random_access_iterator<int*> >(); - test<random_access_iterator<const int*>, int*>(); - - test<const int*, output_iterator<int*> >(); - test<const int*, input_iterator<int*> >(); - test<const int*, forward_iterator<int*> >(); - test<const int*, bidirectional_iterator<int*> >(); - test<const int*, random_access_iterator<int*> >(); - test<const int*, int*>(); - -// #if TEST_STD_VER > 17 -// static_assert(test_constexpr()); -// #endif + test(); + +#if TEST_STD_VER > 17 + static_assert(test()); +#endif return 0; } |