#include #include #include template void TestMismatchSimple(void) { Vector a(4); Vector b(4); a[0] = 1; b[0] = 1; a[1] = 2; b[1] = 2; a[2] = 3; b[2] = 4; a[3] = 4; b[3] = 3; ASSERT_EQUAL(thrust::mismatch(a.begin(), a.end(), b.begin()).first - a.begin(), 2); ASSERT_EQUAL(thrust::mismatch(a.begin(), a.end(), b.begin()).second - b.begin(), 2); b[2] = 3; ASSERT_EQUAL(thrust::mismatch(a.begin(), a.end(), b.begin()).first - a.begin(), 3); ASSERT_EQUAL(thrust::mismatch(a.begin(), a.end(), b.begin()).second - b.begin(), 3); b[3] = 4; ASSERT_EQUAL(thrust::mismatch(a.begin(), a.end(), b.begin()).first - a.begin(), 4); ASSERT_EQUAL(thrust::mismatch(a.begin(), a.end(), b.begin()).second - b.begin(), 4); } DECLARE_VECTOR_UNITTEST(TestMismatchSimple); template thrust::pair mismatch(my_system &system, InputIterator1 first, InputIterator1, InputIterator2) { system.validate_dispatch(); return thrust::make_pair(first,first); } void TestMismatchDispatchExplicit() { thrust::device_vector vec(1); my_system sys(0); thrust::mismatch(sys, vec.begin(), vec.begin(), vec.begin()); ASSERT_EQUAL(true, sys.is_valid()); } DECLARE_UNITTEST(TestMismatchDispatchExplicit); template thrust::pair mismatch(my_tag, InputIterator1 first, InputIterator1, InputIterator2) { *first = 13; return thrust::make_pair(first,first); } void TestMismatchDispatchImplicit() { thrust::device_vector vec(1); thrust::mismatch(thrust::retag(vec.begin()), thrust::retag(vec.begin()), thrust::retag(vec.begin())); ASSERT_EQUAL(13, vec.front()); } DECLARE_UNITTEST(TestMismatchDispatchImplicit);