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

Function AssertAppendScalar

cpp/src/arrow/array/array_test.cc:617–664  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

615}
616
617void AssertAppendScalar(MemoryPool* pool, const std::shared_ptr<Scalar>& scalar) {
618 std::unique_ptr<arrow::ArrayBuilder> builder;
619 auto null_scalar = MakeNullScalar(scalar->type);
620 ASSERT_OK(MakeBuilderExactIndex(pool, scalar->type, &builder));
621 ASSERT_OK(builder->AppendScalar(*scalar)); // [0] = scalar
622 ASSERT_OK(builder->AppendScalar(*scalar)); // [1] = scalar
623 ASSERT_OK(builder->AppendScalar(*null_scalar)); // [2] = NULL
624 ASSERT_OK(builder->AppendScalars({scalar, null_scalar})); // [3, 4] = {scalar, NULL}
625 ASSERT_OK(
626 builder->AppendScalar(*scalar, /*n_repeats=*/2)); // [5, 6] = {scalar, scalar}
627 ASSERT_OK(
628 builder->AppendScalar(*null_scalar, /*n_repeats=*/2)); // [7, 8] = {NULL, NULL}
629
630 std::shared_ptr<Array> out;
631 FinishAndCheckPadding(builder.get(), &out);
632 ASSERT_OK(out->ValidateFull());
633 AssertTypeEqual(scalar->type, out->type());
634 ASSERT_EQ(out->length(), 9);
635
636 auto out_type_id = out->type()->id();
637 const bool can_check_nulls = internal::may_have_validity_bitmap(out_type_id);
638 // For a dictionary builder, the output dictionary won't necessarily be the same
639 const bool can_check_values = !is_dictionary(out_type_id);
640
641 if (can_check_nulls) {
642 ASSERT_EQ(out->null_count(), 4);
643 } else {
644 ASSERT_EQ(out->null_count(), 0);
645 }
646 if (scalar->is_valid) {
647 ASSERT_EQ(out->ComputeLogicalNullCount(), 4);
648 } else {
649 ASSERT_EQ(out->ComputeLogicalNullCount(), 9);
650 }
651
652 for (const auto index : {0, 1, 3, 5, 6}) {
653 ASSERT_NE(out->IsNull(index), scalar->is_valid);
654 ASSERT_OK_AND_ASSIGN(auto scalar_i, out->GetScalar(index));
655 ASSERT_OK(scalar_i->ValidateFull());
656 if (can_check_values) AssertScalarsEqual(*scalar, *scalar_i, /*verbose=*/true);
657 }
658 for (const auto index : {2, 4, 7, 8}) {
659 ASSERT_TRUE(out->IsNull(index));
660 ASSERT_OK_AND_ASSIGN(auto scalar_i, out->GetScalar(index));
661 ASSERT_OK(scalar_i->ValidateFull());
662 AssertScalarsEqual(*null_scalar, *scalar_i, /*verbose=*/true);
663 }
664}
665
666static ScalarVector GetScalars() {
667 auto hello = Buffer::FromString("hello");

Callers 1

TEST_FFunction · 0.85

Calls 15

MakeNullScalarFunction · 0.85
FinishAndCheckPaddingFunction · 0.85
may_have_validity_bitmapFunction · 0.85
AssertScalarsEqualFunction · 0.85
MakeBuilderExactIndexFunction · 0.70
is_dictionaryFunction · 0.50
AppendScalarMethod · 0.45
AppendScalarsMethod · 0.45
getMethod · 0.45
ValidateFullMethod · 0.45
typeMethod · 0.45
lengthMethod · 0.45

Tested by

no test coverage detected