MCPcopy Create free account
hub / github.com/apache/arrow / TestIterators

Function TestIterators

cpp/src/arrow/util/small_vector_test.cc:542–614  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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);

Callers

nothing calls this directly

Calls 5

emplace_backMethod · 0.80
rbeginMethod · 0.80
rendMethod · 0.80
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected