diff --git a/src/iceberg/test/transform_test.cc b/src/iceberg/test/transform_test.cc index 47a1e87e6..fde0a3f0d 100644 --- a/src/iceberg/test/transform_test.cc +++ b/src/iceberg/test/transform_test.cc @@ -71,6 +71,56 @@ TEST(TransformFunctionTest, CreateTruncateTransform) { EXPECT_EQ(transformPtr.value()->transform_type(), TransformType::kTruncate); } +TEST(TransformFunctionTest, CreateYearTransform) { + auto transform = Transform::Year(); + EXPECT_EQ("year", transform->ToString()); + EXPECT_EQ("year", std::format("{}", *transform)); + + auto transformPtr = transform->Bind(iceberg::timestamp()); + ASSERT_TRUE(transformPtr); + EXPECT_EQ(transformPtr.value()->transform_type(), TransformType::kYear); +} + +TEST(TransformFunctionTest, CreateMonthTransform) { + auto transform = Transform::Month(); + EXPECT_EQ("month", transform->ToString()); + EXPECT_EQ("month", std::format("{}", *transform)); + + auto transformPtr = transform->Bind(iceberg::timestamp()); + ASSERT_TRUE(transformPtr); + EXPECT_EQ(transformPtr.value()->transform_type(), TransformType::kMonth); +} + +TEST(TransformFunctionTest, CreateDayTransform) { + auto transform = Transform::Day(); + EXPECT_EQ("day", transform->ToString()); + EXPECT_EQ("day", std::format("{}", *transform)); + + auto transformPtr = transform->Bind(iceberg::timestamp_tz()); + ASSERT_TRUE(transformPtr); + EXPECT_EQ(transformPtr.value()->transform_type(), TransformType::kDay); +} + +TEST(TransformFunctionTest, CreateHourTransform) { + auto transform = Transform::Hour(); + EXPECT_EQ("hour", transform->ToString()); + EXPECT_EQ("hour", std::format("{}", *transform)); + + auto transformPtr = transform->Bind(iceberg::timestamp()); + ASSERT_TRUE(transformPtr); + EXPECT_EQ(transformPtr.value()->transform_type(), TransformType::kHour); +} + +TEST(TransformFunctionTest, CreateVoidTransform) { + auto transform = Transform::Void(); + EXPECT_EQ("void", transform->ToString()); + EXPECT_EQ("void", std::format("{}", *transform)); + + auto transformPtr = transform->Bind(iceberg::int32()); + ASSERT_TRUE(transformPtr); + EXPECT_EQ(transformPtr.value()->transform_type(), TransformType::kVoid); +} + TEST(TransformFromStringTest, PositiveCases) { struct Case { std::string str; diff --git a/src/iceberg/transform_function.cc b/src/iceberg/transform_function.cc index d7c18555d..4325c53d1 100644 --- a/src/iceberg/transform_function.cc +++ b/src/iceberg/transform_function.cc @@ -131,7 +131,7 @@ Result> TruncateTransform::Make( } YearTransform::YearTransform(std::shared_ptr const& source_type) - : TransformFunction(TransformType::kTruncate, source_type) {} + : TransformFunction(TransformType::kYear, source_type) {} Result YearTransform::Transform(const Literal& literal) { ICEBERG_DCHECK(*literal.type() == *source_type(),