summaryrefslogtreecommitdiffstats
path: root/libcxx/test/algorithms/alg.nonmodifying/alg.equal
diff options
context:
space:
mode:
authorMarshall Clow <mclow@qualcomm.com>2013-05-09 21:14:23 +0000
committerMarshall Clow <mclow@qualcomm.com>2013-05-09 21:14:23 +0000
commit0b0bbd2f220c18c26dc8ea758819635c06baa7b7 (patch)
tree2f8e9db3e5ddece204ae7e2132477cf9a688ebe2 /libcxx/test/algorithms/alg.nonmodifying/alg.equal
parent4689326d4c956af27cacbc20db37893809012b52 (diff)
downloadbcm5719-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.cpp33
-rw-r--r--libcxx/test/algorithms/alg.nonmodifying/alg.equal/equal_pred.pass.cpp50
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
}
OpenPOWER on IntegriCloud