diff options
author | Marshall Clow <mclow.lists@gmail.com> | 2018-01-15 16:16:32 +0000 |
---|---|---|
committer | Marshall Clow <mclow.lists@gmail.com> | 2018-01-15 16:16:32 +0000 |
commit | 49c7643c39b0adb6ec88528ad7da01dd82deb84b (patch) | |
tree | 297a49e441a71c80d48a14088679bb3e14f459c2 /libcxx/test/std/algorithms/alg.sorting | |
parent | 776a81a483da73b52f8d73ce441b0f03dbf5411b (diff) | |
download | bcm5719-llvm-49c7643c39b0adb6ec88528ad7da01dd82deb84b.tar.gz bcm5719-llvm-49c7643c39b0adb6ec88528ad7da01dd82deb84b.zip |
First part of P0202: Adding constexpr modifiers to functions in <algorithm> and <utility>. This commit is all the is_XXX algorithms.
llvm-svn: 322489
Diffstat (limited to 'libcxx/test/std/algorithms/alg.sorting')
8 files changed, 116 insertions, 4 deletions
diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap.pass.cpp index f16b2c3c61a..8df07dad1a5 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap.pass.cpp @@ -11,12 +11,23 @@ // template<RandomAccessIterator Iter> // requires LessThanComparable<Iter::value_type> -// bool +// constexpr bool // constexpr after C++17 // is_heap(Iter first, Iter last); #include <algorithm> #include <cassert> +#include "test_macros.h" + +#if TEST_STD_VER > 17 +TEST_CONSTEXPR int test_constexpr() { + int ia[] = {1, 1, 1, 1, 0, 1, 1}; + int ib[] = {0, 0, 1, 0, 0, 0, 0}; + return std::is_heap(std::begin(ia), std::end(ia)) + && !std::is_heap(std::begin(ib), std::end(ib)); + } +#endif + void test() { int i1[] = {0, 0}; @@ -518,4 +529,8 @@ void test() int main() { test(); + +#if TEST_STD_VER > 17 + static_assert(test_constexpr()); +#endif } diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_comp.pass.cpp index af55cc499ed..80b5cd36f20 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_comp.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_comp.pass.cpp @@ -11,13 +11,24 @@ // template<RandomAccessIterator Iter> // requires LessThanComparable<Iter::value_type> -// bool +// constexpr bool // constexpr after C++17 // is_heap(Iter first, Iter last); #include <algorithm> #include <functional> #include <cassert> +#include "test_macros.h" + +#if TEST_STD_VER > 17 +TEST_CONSTEXPR int test_constexpr() { + int ia[] = {0, 0, 1, 1, 1}; + int ib[] = {1, 0, 4, 1, 0}; + return std::is_heap(std::begin(ia), std::end(ia), std::greater<int>()) + && !std::is_heap(std::begin(ib), std::end(ib), std::greater<int>()); + } +#endif + void test() { int i1[] = {0, 0}; @@ -519,4 +530,8 @@ void test() int main() { test(); + +#if TEST_STD_VER > 17 + static_assert(test_constexpr()); +#endif } diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until.pass.cpp index 082c0445182..5616401da79 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until.pass.cpp @@ -11,12 +11,23 @@ // template<RandomAccessIterator Iter> // requires LessThanComparable<Iter::value_type> -// Iter +// constexpr bool // constexpr after C++17 // is_heap_until(Iter first, Iter last); #include <algorithm> #include <cassert> +#include "test_macros.h" + +#if TEST_STD_VER > 17 +TEST_CONSTEXPR int test_constexpr() { + int ia[] = {0, 0, 0, 0, 1, 0}; + int ib[] = {0, 0, 0, 1, 1, 1}; + return (std::is_heap_until(std::begin(ia), std::end(ia)) == ia+4) + && (std::is_heap_until(std::begin(ib), std::end(ib)) == ib+3); + } +#endif + void test() { int i1[] = {0, 0}; @@ -518,4 +529,8 @@ void test() int main() { test(); + +#if TEST_STD_VER > 17 + static_assert(test_constexpr()); +#endif } diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp index 657c177fee5..dba4a0c7ffe 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.heap.operations/is.heap/is_heap_until_comp.pass.cpp @@ -11,13 +11,24 @@ // template<RandomAccessIterator Iter, StrictWeakOrder<auto, Iter::value_type> Compare> // requires CopyConstructible<Compare> -// Iter +// constexpr bool // constexpr after C++17 // is_heap_until(Iter first, Iter last, Compare comp); #include <algorithm> #include <functional> #include <cassert> +#include "test_macros.h" + +#if TEST_STD_VER > 17 +TEST_CONSTEXPR int test_constexpr() { + int ia[] = {1, 0, 0, 0}; + int ib[] = {0, 1, 1, 0}; + return (std::is_heap_until(std::begin(ia), std::end(ia), std::greater<int>()) == ia+1) + && (std::is_heap_until(std::begin(ib), std::end(ib), std::greater<int>()) == ib+3); + } +#endif + void test() { int i1[] = {0, 0}; @@ -519,4 +530,8 @@ void test() int main() { test(); + +#if TEST_STD_VER > 17 + static_assert(test_constexpr()); +#endif } diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp index dd6b5c1766a..e50aae8ef18 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted.pass.cpp @@ -19,6 +19,15 @@ #include "test_iterators.h" +#if TEST_STD_VER > 17 +TEST_CONSTEXPR int test_constexpr() { + int ia[] = {0, 0, 1, 1}; + int ib[] = {1, 1, 0, 0}; + return std::is_sorted(std::begin(ia), std::end(ia)) + && !std::is_sorted(std::begin(ib), std::end(ib)); + } +#endif + template <class Iter> void test() @@ -180,4 +189,8 @@ int main() test<bidirectional_iterator<const int*> >(); test<random_access_iterator<const int*> >(); test<const int*>(); + +#if TEST_STD_VER > 17 + static_assert(test_constexpr()); +#endif } diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp index d5a34e2f2cb..a1562d7c1ed 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_comp.pass.cpp @@ -20,6 +20,15 @@ #include "test_iterators.h" +#if TEST_STD_VER > 17 +TEST_CONSTEXPR int test_constexpr() { + int ia[] = {1, 1, 0, 0}; + int ib[] = {0, 0, 1, 1}; + return std::is_sorted(std::begin(ia), std::end(ia), std::greater<int>()) + && !std::is_sorted(std::begin(ib), std::end(ib), std::greater<int>()); + } +#endif + template <class Iter> void test() @@ -181,4 +190,8 @@ int main() test<bidirectional_iterator<const int*> >(); test<random_access_iterator<const int*> >(); test<const int*>(); + +#if TEST_STD_VER > 17 + static_assert(test_constexpr()); +#endif } diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp index bef01027472..5d30532c825 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until.pass.cpp @@ -19,6 +19,15 @@ #include "test_iterators.h" +#if TEST_STD_VER > 17 +TEST_CONSTEXPR int test_constexpr() { + int ia[] = {0, 1, 0}; + int ib[] = {0, 1, 1}; + return (std::is_sorted_until(std::begin(ia), std::end(ia)) == ia+2) + && (std::is_sorted_until(std::begin(ib), std::end(ib)) == ib+3); + } +#endif + template <class Iter> void test() @@ -180,4 +189,8 @@ int main() test<bidirectional_iterator<const int*> >(); test<random_access_iterator<const int*> >(); test<const int*>(); + +#if TEST_STD_VER > 17 + static_assert(test_constexpr()); +#endif } diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp index 68ed29c6f4b..37b5e44da35 100644 --- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp +++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/is.sorted/is_sorted_until_comp.pass.cpp @@ -20,6 +20,15 @@ #include "test_iterators.h" +#if TEST_STD_VER > 17 +TEST_CONSTEXPR int test_constexpr() { + int ia[] = {1, 0, 1}; + int ib[] = {1, 1, 0}; + return (std::is_sorted_until(std::begin(ia), std::end(ia), std::greater<int>()) == ia+2) + && (std::is_sorted_until(std::begin(ib), std::end(ib), std::greater<int>()) == ib+3); + } +#endif + template <class Iter> void test() @@ -181,4 +190,8 @@ int main() test<bidirectional_iterator<const int*> >(); test<random_access_iterator<const int*> >(); test<const int*>(); + +#if TEST_STD_VER > 17 + static_assert(test_constexpr()); +#endif } |