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

Function TEST

cpp/src/parquet/arrow/variant_test.cc:30–70  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28using ::arrow::struct_;
29
30TEST(TestVariantExtensionType, StorageTypeValidation) {
31 auto variant1 = ::arrow::extension::variant(
32 struct_({field("metadata", binary(), /*nullable=*/false),
33 field("value", binary(), /*nullable=*/false)}));
34 auto variant2 = ::arrow::extension::variant(
35 struct_({field("metadata", binary(), /*nullable=*/false),
36 field("value", binary(), /*nullable=*/false)}));
37
38 ASSERT_TRUE(variant1->Equals(variant2));
39
40 // Metadata and value fields can be provided in either order
41 auto variantFieldsFlipped =
42 std::dynamic_pointer_cast<::arrow::extension::VariantExtensionType>(
43 ::arrow::extension::variant(
44 struct_({field("value", binary(), /*nullable=*/false),
45 field("metadata", binary(), /*nullable=*/false)})));
46
47 ASSERT_EQ("metadata", variantFieldsFlipped->metadata()->name());
48 ASSERT_EQ("value", variantFieldsFlipped->value()->name());
49
50 auto missing_value = struct_({field("metadata", binary(), /*nullable=*/false)});
51 auto missing_metadata = struct_({field("value", binary(), /*nullable=*/false)});
52 auto bad_value_type = struct_({field("metadata", binary(), /*nullable=*/false),
53 field("value", ::arrow::int32(), /*nullable=*/false)});
54 auto extra_field = struct_({field("metadata", binary(), /*nullable=*/false),
55 field("value", binary(), /*nullable=*/false),
56 field("extra", binary(), /*nullable=*/false)});
57 auto nullable_metadata = struct_(
58 {field("metadata", binary()), field("value", binary(), /*nullable=*/false)});
59 auto nullable_value = struct_(
60 {field("metadata", binary(), /*nullable=*/false), field("value", binary())});
61
62 for (const auto& storage_type : {missing_value, missing_metadata, bad_value_type,
63 extra_field, nullable_metadata, nullable_value}) {
64 ASSERT_RAISES_WITH_MESSAGE(
65 Invalid,
66 "Invalid: Invalid storage type for VariantExtensionType: " +
67 storage_type->ToString(),
68 ::arrow::extension::VariantExtensionType::Make(storage_type));
69 }
70}
71
72} // namespace parquet::arrow

Callers

nothing calls this directly

Calls 9

variantFunction · 0.85
struct_Function · 0.85
fieldFunction · 0.70
MakeFunction · 0.50
EqualsMethod · 0.45
nameMethod · 0.45
metadataMethod · 0.45
valueMethod · 0.45
ToStringMethod · 0.45

Tested by

no test coverage detected