From 87376cc18506c1584741f35448471033c497fcbc Mon Sep 17 00:00:00 2001 From: Neil Chao Date: Tue, 28 Jan 2025 16:14:23 -0800 Subject: [PATCH] schema tests --- cpp/src/parquet/schema_test.cc | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cpp/src/parquet/schema_test.cc b/cpp/src/parquet/schema_test.cc index 2532a8656e69f..e7aa588b335ac 100644 --- a/cpp/src/parquet/schema_test.cc +++ b/cpp/src/parquet/schema_test.cc @@ -1150,6 +1150,9 @@ TEST(TestLogicalTypeConstruction, NewTypeIncompatibility) { auto check_is_float16 = [](const std::shared_ptr& logical_type) { return logical_type->is_float16(); }; + auto check_is_variant = [](const std::shared_ptr& logical_type) { + return logical_type->is_variant(); + }; auto check_is_null = [](const std::shared_ptr& logical_type) { return logical_type->is_null(); }; @@ -1163,6 +1166,7 @@ TEST(TestLogicalTypeConstruction, NewTypeIncompatibility) { std::vector cases = { {LogicalType::UUID(), check_is_UUID}, {LogicalType::Float16(), check_is_float16}, + {LogicalType::Variant(), check_is_variant}, {LogicalType::Null(), check_is_null}, {LogicalType::Time(false, LogicalType::TimeUnit::MILLIS), check_is_time}, {LogicalType::Time(false, LogicalType::TimeUnit::MICROS), check_is_time}, @@ -1247,6 +1251,7 @@ TEST(TestLogicalTypeOperation, LogicalTypeProperties) { {BSONLogicalType::Make(), false, true, true}, {UUIDLogicalType::Make(), false, true, true}, {Float16LogicalType::Make(), false, true, true}, + {VariantLogicalType::Make(), false, true, true}, {NoLogicalType::Make(), false, false, true}, }; @@ -1544,6 +1549,7 @@ TEST(TestLogicalTypeOperation, LogicalTypeRepresentation) { {LogicalType::BSON(), "BSON", R"({"Type": "BSON"})"}, {LogicalType::UUID(), "UUID", R"({"Type": "UUID"})"}, {LogicalType::Float16(), "Float16", R"({"Type": "Float16"})"}, + {LogicalType::Variant(), "Variant", R"({"Type": "Variant"})"}, {LogicalType::None(), "None", R"({"Type": "None"})"}, }; @@ -1594,6 +1600,7 @@ TEST(TestLogicalTypeOperation, LogicalTypeSortOrder) { {LogicalType::BSON(), SortOrder::UNSIGNED}, {LogicalType::UUID(), SortOrder::UNSIGNED}, {LogicalType::Float16(), SortOrder::SIGNED}, + {LogicalType::Variant(), SortOrder::UNKNOWN}, {LogicalType::None(), SortOrder::UNKNOWN}}; for (const ExpectedSortOrder& c : cases) { @@ -1735,6 +1742,14 @@ TEST(TestSchemaNodeCreation, FactoryExceptions) { Float16LogicalType::Make(), Type::FIXED_LEN_BYTE_ARRAY, 3)); + // Incompatible primitive type ... + ASSERT_ANY_THROW(PrimitiveNode::Make("variant", Repetition::REQUIRED, + VariantLogicalType::Make(), Type::DOUBLE)); + // Incompatible primitive type ... + ASSERT_ANY_THROW(PrimitiveNode::Make("variant", Repetition::REQUIRED, + VariantLogicalType::Make(), + Type::FIXED_LEN_BYTE_ARRAY, 2)); + // Non-positive length argument for fixed length binary ... ASSERT_ANY_THROW(PrimitiveNode::Make("negative_length", Repetition::REQUIRED, NoLogicalType::Make(), Type::FIXED_LEN_BYTE_ARRAY, @@ -1928,6 +1943,8 @@ TEST_F(TestSchemaElementConstruction, SimpleCases) { {"float16", LogicalType::Float16(), Type::FIXED_LEN_BYTE_ARRAY, 2, false, ConvertedType::NA, true, [this]() { return element_->logicalType.__isset.FLOAT16; }}, + {"variant", LogicalType::Variant(), Type::BYTE_ARRAY, -1, false, ConvertedType::NA, + true, [this]() { return element_->logicalType.__isset.VARIANT; }}, {"none", LogicalType::None(), Type::INT64, -1, false, ConvertedType::NA, false, check_nothing}}; @@ -2265,6 +2282,7 @@ TEST(TestLogicalTypeSerialization, Roundtrips) { {LogicalType::BSON(), Type::BYTE_ARRAY, -1}, {LogicalType::UUID(), Type::FIXED_LEN_BYTE_ARRAY, 16}, {LogicalType::Float16(), Type::FIXED_LEN_BYTE_ARRAY, 2}, + {LogicalType::Variant(), Type::BYTE_ARRAY, -1}, {LogicalType::None(), Type::BOOLEAN, -1}}; for (const AnnotatedPrimitiveNodeFactoryArguments& c : cases) {