| 540 | } |
| 541 | |
| 542 | void TestIterators() { |
| 543 | constexpr size_t N = Traits::TestSizeFor(5); |
| 544 | { |
| 545 | // Forward iterators |
| 546 | IntVectorType<N> ints; |
| 547 | ASSERT_EQ(ints.begin(), ints.end()); |
| 548 | |
| 549 | for (int v : {5, 6, 7, 8, 42}) { |
| 550 | ints.emplace_back(v); |
| 551 | } |
| 552 | |
| 553 | auto it = ints.begin(); |
| 554 | ASSERT_NE(it, ints.end()); |
| 555 | ASSERT_EQ(*it++, 5); |
| 556 | ASSERT_EQ(ints.end() - it, 4); |
| 557 | |
| 558 | auto it2 = ++it; |
| 559 | ASSERT_EQ(*it, 7); |
| 560 | ASSERT_EQ(*it2, 7); |
| 561 | ASSERT_EQ(it, it2); |
| 562 | |
| 563 | ASSERT_EQ(ints.end() - it, 3); |
| 564 | ASSERT_EQ(*it--, 7); |
| 565 | ASSERT_NE(it, it2); |
| 566 | |
| 567 | ASSERT_EQ(ints.end() - it, 4); |
| 568 | ASSERT_NE(it, ints.end()); |
| 569 | ASSERT_EQ(*--it, 5); |
| 570 | ASSERT_EQ(*it, 5); |
| 571 | ASSERT_EQ(ints.end() - it, 5); |
| 572 | it += 4; |
| 573 | ASSERT_EQ(*it, 42); |
| 574 | ASSERT_EQ(ints.end() - it, 1); |
| 575 | ASSERT_NE(it, ints.end()); |
| 576 | ASSERT_EQ(*(it - 3), 6); |
| 577 | ASSERT_EQ(++it, ints.end()); |
| 578 | } |
| 579 | { |
| 580 | // Reverse iterators |
| 581 | IntVectorType<N> ints; |
| 582 | ASSERT_EQ(ints.rbegin(), ints.rend()); |
| 583 | |
| 584 | for (int v : {42, 8, 7, 6, 5}) { |
| 585 | ints.emplace_back(v); |
| 586 | } |
| 587 | |
| 588 | auto it = ints.rbegin(); |
| 589 | ASSERT_NE(it, ints.rend()); |
| 590 | ASSERT_EQ(*it++, 5); |
| 591 | ASSERT_EQ(ints.rend() - it, 4); |
| 592 | |
| 593 | auto it2 = ++it; |
| 594 | ASSERT_EQ(*it, 7); |
| 595 | ASSERT_EQ(*it2, 7); |
| 596 | ASSERT_EQ(it, it2); |
| 597 | |
| 598 | ASSERT_EQ(ints.rend() - it, 3); |
| 599 | ASSERT_EQ(*it--, 7); |
nothing calls this directly
no test coverage detected