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

Method TestRangeOfValuesUsed

cpp/src/arrow/util/list_util_test.cc:50–150  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

48 }
49
50 void TestRangeOfValuesUsed() {
51 std::shared_ptr<ArrayData> result;
52
53 // These list-views are built manually with the list-view builders instead
54 // of using something like ArrayFromJSON() because we want to test the
55 // RangeOfValuesUsed() function's ability to handle arrays containing
56 // overlapping list-views.
57
58 // Empty list-like array
59 ASSERT_OK(builder_->FinishInternal(&result));
60 builder_->Reset();
61 ASSERT_OK_AND_ASSIGN(auto range, list_util::internal::RangeOfValuesUsed(*result));
62 ASSERT_EQ(range.first, 0);
63 ASSERT_EQ(range.second, 0);
64
65 // List-like array with only nulls
66 ASSERT_OK(builder_->AppendNulls(3));
67 ASSERT_OK(builder_->FinishInternal(&result));
68 builder_->Reset();
69 ASSERT_OK_AND_ASSIGN(range, list_util::internal::RangeOfValuesUsed(*result));
70 ASSERT_EQ(range.first, 0);
71 ASSERT_EQ(range.second, 0);
72
73 // Array with nulls and non-nulls (starting at a non-zero offset)
74 Int16Builder* vb = checked_cast<Int16Builder*>(builder_->value_builder());
75 ASSERT_OK(vb->Append(-2));
76 ASSERT_OK(vb->Append(-1));
77 ASSERT_OK(builder_->Append(/*is_valid=*/false, 0));
78 ASSERT_OK(builder_->Append(/*is_valid=*/true, 2));
79 ASSERT_OK(vb->Append(0));
80 ASSERT_OK(vb->Append(1));
81 ASSERT_OK(builder_->Append(/*is_valid=*/true, 3));
82 ASSERT_OK(vb->Append(2));
83 ASSERT_OK(vb->Append(3));
84 ASSERT_OK(vb->Append(4));
85 if constexpr (is_list_view_type<TypeClass>::value) {
86 ASSERT_OK(vb->Append(10));
87 ASSERT_OK(vb->Append(11));
88 }
89 std::shared_ptr<Array> array;
90 ASSERT_OK(builder_->Finish(&array));
91 builder_->Reset();
92 ASSERT_OK(array->ValidateFull());
93 ASSERT_OK_AND_ASSIGN(range, list_util::internal::RangeOfValuesUsed(*array->data()));
94 ASSERT_EQ(range.first, 2);
95 ASSERT_EQ(range.second, 5);
96
97 // Overlapping list-views
98 vb = checked_cast<Int16Builder*>(builder_->value_builder());
99 ASSERT_OK(vb->Append(-2));
100 ASSERT_OK(vb->Append(-1));
101 ASSERT_OK(builder_->Append(/*is_valid=*/false, 0));
102 if constexpr (is_list_view_type<TypeClass>::value) {
103 ASSERT_OK(builder_->Append(/*is_valid=*/true, 6));
104 ASSERT_OK(vb->Append(0));
105 ASSERT_OK(builder_->Append(/*is_valid=*/true, 2));
106 ASSERT_OK(vb->Append(1));
107 ASSERT_OK(vb->Append(2));

Callers 1

TYPED_TESTFunction · 0.80

Calls 11

RangeOfValuesUsedFunction · 0.85
ArrayFromJSONFunction · 0.85
ASSERT_OK_AND_ASSIGNFunction · 0.70
FinishInternalMethod · 0.45
ResetMethod · 0.45
AppendNullsMethod · 0.45
value_builderMethod · 0.45
AppendMethod · 0.45
FinishMethod · 0.45
ValidateFullMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected