diff options
author | Marshall Clow <mclow.lists@gmail.com> | 2014-11-17 18:52:25 +0000 |
---|---|---|
committer | Marshall Clow <mclow.lists@gmail.com> | 2014-11-17 18:52:25 +0000 |
commit | 85a429a67a59f692dc452e6f1432e3859043f703 (patch) | |
tree | 4fef4d89928371955d4f967a65912d18f3d5d8a2 /libcxx/test/algorithms/alg.nonmodifying | |
parent | e1e348b857128d824973314943cee02acfe20f9f (diff) | |
download | bcm5719-llvm-85a429a67a59f692dc452e6f1432e3859043f703.tar.gz bcm5719-llvm-85a429a67a59f692dc452e6f1432e3859043f703.zip |
Reworked mismatch tests to count the number of comparisons, and make sure we are conforming with LWG2404. We are
llvm-svn: 222159
Diffstat (limited to 'libcxx/test/algorithms/alg.nonmodifying')
-rw-r--r-- | libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp | 47 | ||||
-rw-r--r-- | libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp | 58 |
2 files changed, 47 insertions, 58 deletions
diff --git a/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp index 78f795afae4..2f424f41669 100644 --- a/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp +++ b/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp @@ -28,39 +28,26 @@ int main() int ia[] = {0, 1, 2, 2, 0, 1, 2, 3}; const unsigned sa = sizeof(ia)/sizeof(ia[0]); int ib[] = {0, 1, 2, 3, 0, 1, 2, 3}; - assert(std::mismatch(input_iterator<const int*>(ia), - input_iterator<const int*>(ia + sa), - input_iterator<const int*>(ib)) == - (std::pair<input_iterator<const int*>, - input_iterator<const int*> >( - input_iterator<const int*>(ia+3), - input_iterator<const int*>(ib+3)))); + const unsigned sb = sizeof(ib)/sizeof(ib[0]); - assert(std::mismatch(comma_iterator<const int*>(ia), - comma_iterator<const int*>(ia + sa), - comma_iterator<const int*>(ib)) == - (std::pair<comma_iterator<const int*>, - comma_iterator<const int*> >( - comma_iterator<const int*>(ia+3), - comma_iterator<const int*>(ib+3)))); + typedef input_iterator<const int*> II; + typedef random_access_iterator<const int*> RAI; + + assert(std::mismatch(II(ia), II(ia + sa), II(ib)) + == (std::pair<II, II>(II(ia+3), II(ib+3)))); + + assert(std::mismatch(RAI(ia), RAI(ia + sa), RAI(ib)) + == (std::pair<RAI, RAI>(RAI(ia+3), RAI(ib+3)))); #ifdef HAS_FOUR_ITERATOR_VERSION - assert(std::mismatch(input_iterator<const int*>(ia), - input_iterator<const int*>(ia + sa), - input_iterator<const int*>(ib), - input_iterator<const int*>(ib + sa)) == - (std::pair<input_iterator<const int*>, - input_iterator<const int*> >( - input_iterator<const int*>(ia+3), - input_iterator<const int*>(ib+3)))); + assert(std::mismatch(II(ia), II(ia + sa), II(ib), II(ib+sb)) + == (std::pair<II, II>(II(ia+3), II(ib+3)))); + + assert(std::mismatch(RAI(ia), RAI(ia + sa), RAI(ib), II(ib+sb)) + == (std::pair<RAI, RAI>(RAI(ia+3), RAI(ib+3))))); + - assert(std::mismatch(input_iterator<const int*>(ia), - input_iterator<const int*>(ia + sa), - input_iterator<const int*>(ib), - input_iterator<const int*>(ib + 2)) == - (std::pair<input_iterator<const int*>, - input_iterator<const int*> >( - input_iterator<const int*>(ia+2), - input_iterator<const int*>(ib+2)))); + assert(std::mismatch(II(ia), II(ia + sa), II(ib), II(ib+2)) + == (std::pair<II, II>(II(ia+2), II(ib+2)))); #endif } diff --git a/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp b/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp index aeb74104bb4..8bf34009f08 100644 --- a/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp +++ b/libcxx/test/algorithms/alg.nonmodifying/mismatch/mismatch_pred.pass.cpp @@ -20,6 +20,7 @@ #include <cassert> #include "test_iterators.h" +#include "counting_predicates.hpp" #if _LIBCPP_STD_VER > 11 #define HAS_FOUR_ITERATOR_VERSION @@ -31,40 +32,41 @@ int main() int ia[] = {0, 1, 2, 2, 0, 1, 2, 3}; const unsigned sa = sizeof(ia)/sizeof(ia[0]); int ib[] = {0, 1, 2, 3, 0, 1, 2, 3}; - assert(std::mismatch(input_iterator<const int*>(ia), - input_iterator<const int*>(ia + sa), - input_iterator<const int*>(ib), - std::equal_to<int>()) == - (std::pair<input_iterator<const int*>, - input_iterator<const int*> >( - input_iterator<const int*>(ia+3), - input_iterator<const int*>(ib+3)))); - assert(std::mismatch(comma_iterator<const int*>(ia), - comma_iterator<const int*>(ia + sa), - comma_iterator<const int*>(ib), - std::equal_to<int>()) == - (std::pair<comma_iterator<const int*>, - comma_iterator<const int*> >( - comma_iterator<const int*>(ia+3), - comma_iterator<const int*>(ib+3)))); + const unsigned sb = sizeof(ib)/sizeof(ib[0]); + + typedef input_iterator<const int*> II; + typedef random_access_iterator<const int*> RAI; + typedef std::equal_to<int> EQ; + + assert(std::mismatch(II(ia), II(ia + sa), II(ib), EQ()) + == (std::pair<II, II>(II(ia+3), II(ib+3)))); + assert(std::mismatch(RAI(ia), RAI(ia + sa), RAI(ib), EQ()) + == (std::pair<RAI, RAI>(RAI(ia+3), RAI(ib+3)))); + + binary_counting_predicate<EQ, int> bcp((EQ())); + assert(std::mismatch(RAI(ia), RAI(ia + sa), RAI(ib), std::ref(bcp)) + == (std::pair<RAI, RAI>(RAI(ia+3), RAI(ib+3)))); + assert(bcp.count() > 0 && bcp.count() < sa); + bcp.reset(); + #ifdef HAS_FOUR_ITERATOR_VERSION - assert(std::mismatch(input_iterator<const int*>(ia), - input_iterator<const int*>(ia + sa), - input_iterator<const int*>(ib), - input_iterator<const int*>(ib + sa), - std::equal_to<int>()) == - (std::pair<input_iterator<const int*>, - input_iterator<const int*> >( - input_iterator<const int*>(ia+3), - input_iterator<const int*>(ib+3)))); + assert(std::mismatch(II(ia), II(ia + sa), II(ib), II(ib + sb), EQ()) + == (std::pair<II, II>(II(ia+3), II(ib+3)))); + assert(std::mismatch(RAI(ia), RAI(ia + sa), RAI(ib), RAI(ib + sb), EQ()) + == (std::pair<RAI, RAI>(RAI(ia+3), RAI(ib+3)))); + + assert(std::mismatch(II(ia), II(ia + sa), II(ib), II(ib + sa), bcp) + == (std::pair<II, II>(II(ia+3), II(ib+3)))); + assert(bcp.count() > 0 && bcp.count() < std::min(sa, sb)); #endif - assert(std::mismatch(ia, ia + sa, ib, std::equal_to<int>()) == + assert(std::mismatch(ia, ia + sa, ib, EQ()) == (std::pair<int*,int*>(ia+3,ib+3))); + #ifdef HAS_FOUR_ITERATOR_VERSION - assert(std::mismatch(ia, ia + sa, ib, ib + sa, std::equal_to<int>()) == + assert(std::mismatch(ia, ia + sa, ib, ib + sb, EQ()) == (std::pair<int*,int*>(ia+3,ib+3))); - assert(std::mismatch(ia, ia + sa, ib, ib + 2, std::equal_to<int>()) == + assert(std::mismatch(ia, ia + sa, ib, ib + 2, EQ()) == (std::pair<int*,int*>(ia+2,ib+2))); #endif } |