diff options
author | Marshall Clow <mclow@qualcomm.com> | 2013-05-09 21:14:23 +0000 |
---|---|---|
committer | Marshall Clow <mclow@qualcomm.com> | 2013-05-09 21:14:23 +0000 |
commit | 0b0bbd2f220c18c26dc8ea758819635c06baa7b7 (patch) | |
tree | 2f8e9db3e5ddece204ae7e2132477cf9a688ebe2 /libcxx/test/algorithms/alg.nonmodifying/alg.equal | |
parent | 4689326d4c956af27cacbc20db37893809012b52 (diff) | |
download | bcm5719-llvm-0b0bbd2f220c18c26dc8ea758819635c06baa7b7.tar.gz bcm5719-llvm-0b0bbd2f220c18c26dc8ea758819635c06baa7b7.zip |
Implement n3607: 'equal', 'mismatch', and 'is_permutation'
llvm-svn: 181548
Diffstat (limited to 'libcxx/test/algorithms/alg.nonmodifying/alg.equal')
-rw-r--r-- | libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp | 33 | ||||
-rw-r--r-- | libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp | 50 |
2 files changed, 83 insertions, 0 deletions
diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp index 1b1a2ad420f..6ecd4919f07 100644 --- a/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp +++ b/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp @@ -19,6 +19,10 @@ #include "test_iterators.h" +#if _LIBCPP_STD_VER > 11 +#define HAS_FOUR_ITERATOR_VERSION +#endif + int main() { int ia[] = {0, 1, 2, 3, 4, 5}; @@ -27,7 +31,36 @@ int main() assert(std::equal(input_iterator<const int*>(ia), input_iterator<const int*>(ia+s), input_iterator<const int*>(ia))); +#ifdef HAS_FOUR_ITERATOR_VERSION + assert(std::equal(input_iterator<const int*>(ia), + input_iterator<const int*>(ia+s), + input_iterator<const int*>(ia), + input_iterator<const int*>(ia+s))); + assert(std::equal(random_access_iterator<const int*>(ia), + random_access_iterator<const int*>(ia+s), + random_access_iterator<const int*>(ia), + random_access_iterator<const int*>(ia+s))); +#endif assert(!std::equal(input_iterator<const int*>(ia), input_iterator<const int*>(ia+s), input_iterator<const int*>(ib))); +#ifdef HAS_FOUR_ITERATOR_VERSION + assert(!std::equal(input_iterator<const int*>(ia), + input_iterator<const int*>(ia+s), + input_iterator<const int*>(ib), + input_iterator<const int*>(ib+s))); + assert(!std::equal(random_access_iterator<const int*>(ia), + random_access_iterator<const int*>(ia+s), + random_access_iterator<const int*>(ib), + random_access_iterator<const int*>(ib+s))); + assert(!std::equal(input_iterator<const int*>(ia), + input_iterator<const int*>(ia+s), + input_iterator<const int*>(ia), + input_iterator<const int*>(ia+s-1))); + assert(!std::equal(random_access_iterator<const int*>(ia), + random_access_iterator<const int*>(ia+s), + random_access_iterator<const int*>(ia), + random_access_iterator<const int*>(ia+s-1))); + +#endif } diff --git a/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp index b21d38b6ae5..b898220565f 100644 --- a/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp +++ b/libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp @@ -21,6 +21,17 @@ #include "test_iterators.h" +#if _LIBCPP_STD_VER > 11 +#define HAS_FOUR_ITERATOR_VERSION +#endif + +int comparison_count = 0; +template <typename T> +bool counting_equals ( const T &a, const T &b ) { + ++comparison_count; + return a == b; + } + int main() { int ia[] = {0, 1, 2, 3, 4, 5}; @@ -30,8 +41,47 @@ int main() input_iterator<const int*>(ia+s), input_iterator<const int*>(ia), std::equal_to<int>())); +#ifdef HAS_FOUR_ITERATOR_VERSION + assert(std::equal(input_iterator<const int*>(ia), + input_iterator<const int*>(ia+s), + input_iterator<const int*>(ia), + input_iterator<const int*>(ia+s), + std::equal_to<int>())); + assert(std::equal(random_access_iterator<const int*>(ia), + random_access_iterator<const int*>(ia+s), + random_access_iterator<const int*>(ia), + random_access_iterator<const int*>(ia+s), + std::equal_to<int>())); + + comparison_count = 0; + assert(!std::equal(input_iterator<const int*>(ia), + input_iterator<const int*>(ia+s), + input_iterator<const int*>(ia), + input_iterator<const int*>(ia+s-1), + counting_equals<int>)); + assert(comparison_count > 0); + comparison_count = 0; + assert(!std::equal(random_access_iterator<const int*>(ia), + random_access_iterator<const int*>(ia+s), + random_access_iterator<const int*>(ia), + random_access_iterator<const int*>(ia+s-1), + counting_equals<int>)); + assert(comparison_count == 0); +#endif + assert(!std::equal(input_iterator<const int*>(ia), + input_iterator<const int*>(ia+s), + input_iterator<const int*>(ib), + std::equal_to<int>())); +#ifdef HAS_FOUR_ITERATOR_VERSION assert(!std::equal(input_iterator<const int*>(ia), input_iterator<const int*>(ia+s), input_iterator<const int*>(ib), + input_iterator<const int*>(ib+s), + std::equal_to<int>())); + assert(!std::equal(random_access_iterator<const int*>(ia), + random_access_iterator<const int*>(ia+s), + random_access_iterator<const int*>(ib), + random_access_iterator<const int*>(ib+s), std::equal_to<int>())); +#endif } |