Spaces:
Runtime error
Runtime error
#include <unittest/unittest.h> | |
#include <thrust/advance.h> | |
#include <thrust/sequence.h> | |
// TODO expand this with other iterator types (forward, bidirectional, etc.) | |
template <typename Vector> | |
void TestAdvance() | |
{ | |
typedef typename Vector::value_type T; | |
typedef typename Vector::iterator Iterator; | |
Vector v(10); | |
thrust::sequence(v.begin(), v.end()); | |
Iterator i = v.begin(); | |
thrust::advance(i, 1); | |
ASSERT_EQUAL(*i, T(1)); | |
thrust::advance(i, 8); | |
ASSERT_EQUAL(*i, T(9)); | |
thrust::advance(i, -4); | |
ASSERT_EQUAL(*i, T(5)); | |
} | |
DECLARE_VECTOR_UNITTEST(TestAdvance); | |
template <typename Vector> | |
void TestNext() | |
{ | |
typedef typename Vector::value_type T; | |
typedef typename Vector::iterator Iterator; | |
Vector v(10); | |
thrust::sequence(v.begin(), v.end()); | |
Iterator const i0 = v.begin(); | |
Iterator const i1 = thrust::next(i0); | |
ASSERT_EQUAL(*i0, T(0)); | |
ASSERT_EQUAL(*i1, T(1)); | |
Iterator const i2 = thrust::next(i1, 8); | |
ASSERT_EQUAL(*i0, T(0)); | |
ASSERT_EQUAL(*i1, T(1)); | |
ASSERT_EQUAL(*i2, T(9)); | |
Iterator const i3 = thrust::next(i2, -4); | |
ASSERT_EQUAL(*i0, T(0)); | |
ASSERT_EQUAL(*i1, T(1)); | |
ASSERT_EQUAL(*i2, T(9)); | |
ASSERT_EQUAL(*i3, T(5)); | |
} | |
DECLARE_VECTOR_UNITTEST(TestNext); | |
template <typename Vector> | |
void TestPrev() | |
{ | |
typedef typename Vector::value_type T; | |
typedef typename Vector::iterator Iterator; | |
Vector v(10); | |
thrust::sequence(v.begin(), v.end()); | |
Iterator const i0 = v.end(); | |
Iterator const i1 = thrust::prev(i0); | |
ASSERT_EQUAL_QUIET(i0, v.end()); | |
ASSERT_EQUAL(*i1, T(9)); | |
Iterator const i2 = thrust::prev(i1, 8); | |
ASSERT_EQUAL_QUIET(i0, v.end()); | |
ASSERT_EQUAL(*i1, T(9)); | |
ASSERT_EQUAL(*i2, T(1)); | |
Iterator const i3 = thrust::prev(i2, -4); | |
ASSERT_EQUAL_QUIET(i0, v.end()); | |
ASSERT_EQUAL(*i1, T(9)); | |
ASSERT_EQUAL(*i2, T(1)); | |
ASSERT_EQUAL(*i3, T(5)); | |
} | |
DECLARE_VECTOR_UNITTEST(TestPrev); | |