| 626 | } |
| 627 | |
| 628 | void testCopyRangesFromAllNulls( |
| 629 | const VectorPtr& vector, |
| 630 | const VectorPtr& allNullSource) { |
| 631 | SCOPED_TRACE(vector->toString()); |
| 632 | |
| 633 | const vector_size_t size = 1'000; |
| 634 | |
| 635 | ASSERT_GE(vector->size(), size); |
| 636 | |
| 637 | // Save a copy of the 'vector' to compare results after copy. |
| 638 | auto vectorCopy = BaseVector::copy(*vector); |
| 639 | |
| 640 | std::vector<BaseVector::CopyRange> rangesToCopy = { |
| 641 | {0, 0, 7}, |
| 642 | {10, 12, 5}, |
| 643 | {100, 500, 79}, |
| 644 | {200, 601, 1}, |
| 645 | {990, 950, 10}, |
| 646 | }; |
| 647 | |
| 648 | std::vector<BaseVector::CopyRange> rangesToKeep = { |
| 649 | {0, 7, 5}, |
| 650 | {0, 17, 500 - 17}, |
| 651 | {0, 579, 601 - 579}, |
| 652 | {0, 602, 950 - 602}, |
| 653 | {0, 960, 40}, |
| 654 | }; |
| 655 | |
| 656 | vector->copyRanges(allNullSource.get(), rangesToCopy); |
| 657 | |
| 658 | for (const auto& range : rangesToCopy) { |
| 659 | for (auto i = 0; i < range.count; ++i) { |
| 660 | EXPECT_TRUE(vector->isNullAt(range.targetIndex + i)); |
| 661 | } |
| 662 | } |
| 663 | |
| 664 | for (const auto& range : rangesToKeep) { |
| 665 | for (auto i = 0; i < range.count; ++i) { |
| 666 | auto index = range.targetIndex + i; |
| 667 | EXPECT_FALSE(vector->isNullAt(index)); |
| 668 | EXPECT_TRUE(vector->equalValueAt(vectorCopy.get(), index, index)) |
| 669 | << "at " << index << ": " << vector->toString(index) << " vs. " |
| 670 | << vectorCopy->toString(index); |
| 671 | } |
| 672 | } |
| 673 | } |
| 674 | |
| 675 | static void testSlice( |
| 676 | const VectorPtr& vec, |
nothing calls this directly
no test coverage detected