@@ -176,6 +176,7 @@ class AccessorIteratorTest : public ::testing::Test {
176
176
// FIXME: consider turning this into parameterized test to check various
177
177
// accessor types
178
178
TEST_F (AccessorIteratorTest, IteratorTraits) {
179
+
179
180
using IteratorT = sycl::accessor<int >::iterator;
180
181
ASSERT_TRUE (
181
182
(std::is_same_v<sycl::accessor<int >::difference_type,
@@ -194,6 +195,7 @@ TEST_F(AccessorIteratorTest, IteratorTraits) {
194
195
// Based on requirements listed at
195
196
// https://en.cppreference.com/w/cpp/named_req/RandomAccessIterator
196
197
TEST_F (AccessorIteratorTest, LegacyRandomAccessIteratorRequirements) {
198
+
197
199
using IteratorT = sycl::accessor<int >::iterator;
198
200
IteratorT It;
199
201
auto &RefToIt = It;
@@ -435,10 +437,8 @@ TEST_F(AccessorIteratorTest, PartialCopyWithOffset3D) {
435
437
sycl::range<3 >{7 , 7 , 7 }, sycl::range<3 >{3 , 3 , 3 }, sycl::id<3 >{2 , 2 , 2 }));
436
438
ASSERT_NO_FATAL_FAILURE (checkPartialCopyThroughIterator (
437
439
sycl::range<3 >{8 , 8 , 8 }, sycl::range<3 >{4 , 4 , 4 }, sycl::id<3 >{4 , 4 , 4 }));
438
- // FIXME: figure out why the test below fails
439
- // ASSERT_NO_FATAL_FAILURE(checkPartialCopyThroughIterator(
440
- // sycl::range<3>{7, 7, 7}, sycl::range<3>{3, 3, 3}, sycl::id<3>{4, 4,
441
- // 4}));
440
+ ASSERT_NO_FATAL_FAILURE (checkPartialCopyThroughIterator (
441
+ sycl::range<3 >{7 , 7 , 7 }, sycl::range<3 >{3 , 3 , 3 }, sycl::id<3 >{4 , 4 , 4 }));
442
442
ASSERT_NO_FATAL_FAILURE (checkPartialCopyThroughIterator (
443
443
sycl::range<3 >{7 , 7 , 7 }, sycl::range<3 >{3 , 4 , 5 }, sycl::id<3 >{3 , 2 , 1 }));
444
444
ASSERT_NO_FATAL_FAILURE (checkPartialCopyThroughIterator (
@@ -525,3 +525,49 @@ TEST_F(AccessorIteratorTest, PartialWriteWithOffset3D) {
525
525
ASSERT_NO_FATAL_FAILURE (checkWriteThroughIterator (
526
526
sycl::range<3 >{3 , 6 , 4 }, sycl::range<3 >{1 , 3 , 2 }, sycl::id<3 >{1 , 3 , 2 }));
527
527
}
528
+
529
+ TEST_F (AccessorIteratorTest, IteratorEquivalentIncrements) {
530
+ std::vector<int > reference (6 );
531
+ std::iota (reference.begin (), reference.end (), 0 );
532
+ sycl::buffer<int > buffer (reference.data (), sycl::range<1 >{reference.size ()});
533
+ auto accessor = buffer.template get_access <sycl::access_mode::read_write>();
534
+ auto a = accessor.begin ();
535
+ auto b = accessor.begin ();
536
+ a++;
537
+ ++b;
538
+ ASSERT_TRUE (a == b);
539
+ }
540
+
541
+ TEST_F (AccessorIteratorTest, IteratorEquivalentDecrements) {
542
+ std::vector<int > reference (6 );
543
+ std::iota (reference.begin (), reference.end (), 0 );
544
+ sycl::buffer<int > buffer (reference.data (), sycl::range<1 >{reference.size ()});
545
+ auto accessor = buffer.template get_access <sycl::access_mode::read_write>();
546
+ auto a = accessor.begin ();
547
+ auto b = accessor.begin ();
548
+ a--;
549
+ --b;
550
+ ASSERT_TRUE (a == b);
551
+ }
552
+
553
+ TEST_F (AccessorIteratorTest, IteratorSubscriptOperator) {
554
+ std::vector<int > reference (6 );
555
+ std::iota (reference.begin (), reference.end (), 0 );
556
+ sycl::buffer<int > buffer (reference.data (), sycl::range<1 >{reference.size ()});
557
+ auto accessor = buffer.template get_access <sycl::access_mode::read_write>();
558
+ auto a = accessor.begin ();
559
+ auto b = accessor.begin ();
560
+ ASSERT_TRUE (a[3 ] == *(3 + b));
561
+ }
562
+
563
+ TEST_F (AccessorIteratorTest, IteratorInequalitiesOperators) {
564
+ std::vector<int > reference (6 );
565
+ std::iota (reference.begin (), reference.end (), 0 );
566
+ sycl::buffer<int > buffer (reference.data (), sycl::range<1 >{reference.size ()});
567
+ auto accessor = buffer.template get_access <sycl::access_mode::read_write>();
568
+ auto a = accessor.begin ();
569
+ auto b = accessor.begin ();
570
+ ASSERT_FALSE (a > b);
571
+ ASSERT_TRUE (a <= b);
572
+ ASSERT_TRUE (a >= b);
573
+ }
0 commit comments