@@ -256,6 +256,20 @@ TEST(LiteralTest, DoubleZeroComparison) {
256256 EXPECT_EQ (neg_zero <=> pos_zero, std::partial_ordering::less);
257257}
258258
259+ TEST (LiteralTest, UuidComparison) {
260+ auto uuid1 = Uuid::FromString (" 123e4567-e89b-12d3-a456-426614174000" ).value ();
261+ auto uuid2 = Uuid::FromString (" 123e4567-e89b-12d3-a456-426614174001" ).value ();
262+ auto uuid3 = Uuid::FromString (" 123e4567-e89b-12d3-a456-426614174000" ).value ();
263+
264+ auto literal1 = Literal::UUID (uuid1);
265+ auto literal2 = Literal::UUID (uuid2);
266+ auto literal3 = Literal::UUID (uuid3);
267+
268+ EXPECT_EQ (literal1 <=> literal3, std::partial_ordering::equivalent);
269+ EXPECT_EQ (literal1 <=> literal2, std::partial_ordering::unordered);
270+ EXPECT_EQ (literal2 <=> literal1, std::partial_ordering::unordered);
271+ }
272+
259273// Parameter struct for literal serialization and deserialization tests
260274struct LiteralParam {
261275 std::string test_name;
@@ -346,6 +360,17 @@ INSTANTIATE_TEST_SUITE_P(
346360 Literal::Double (std::numeric_limits<double >::lowest ()),
347361 float64 ()},
348362
363+ // Decimal type
364+ LiteralParam{" DecimalPositive" ,
365+ {1 , 226 , 64 },
366+ Literal::Decimal (123456 , 6 , 2 ),
367+ decimal (6 , 2 )},
368+ LiteralParam{" DecimalNegative" ,
369+ {254 , 29 , 192 },
370+ Literal::Decimal (-123456 , 6 , 2 ),
371+ decimal (6 , 2 )},
372+ LiteralParam{" DecimalZero" , {0 }, Literal::Decimal (0 , 3 , 0 ), decimal (3 , 0 )},
373+
349374 LiteralParam{" String" ,
350375 {105 , 99 , 101 , 98 , 101 , 114 , 103 },
351376 Literal::String (" iceberg" ),
@@ -506,10 +531,28 @@ INSTANTIATE_TEST_SUITE_P(
506531 .literal = Literal::Double (std::numbers::pi),
507532 .expected_type_id = TypeId::kDouble ,
508533 .expected_string = " 3.141593" },
534+ BasicLiteralTestParam{.test_name = " DecimalPositive" ,
535+ .literal = Literal::Decimal (123456 , 6 , 2 ),
536+ .expected_type_id = TypeId::kDecimal ,
537+ .expected_string = " 1234.56" },
538+ BasicLiteralTestParam{.test_name = " DecimalNegative" ,
539+ .literal = Literal::Decimal (-123456 , 6 , 2 ),
540+ .expected_type_id = TypeId::kDecimal ,
541+ .expected_string = " -1234.56" },
542+ BasicLiteralTestParam{.test_name = " DecimalZero" ,
543+ .literal = Literal::Decimal (0 , 3 , 0 ),
544+ .expected_type_id = TypeId::kDecimal ,
545+ .expected_string = " 0" },
509546 BasicLiteralTestParam{.test_name = " String" ,
510547 .literal = Literal::String (" hello world" ),
511548 .expected_type_id = TypeId::kString ,
512549 .expected_string = " \" hello world\" " },
550+ BasicLiteralTestParam{
551+ .test_name = " Uuid" ,
552+ .literal = Literal::UUID (
553+ Uuid::FromString (" 123e4567-e89b-12d3-a456-426614174000" ).value ()),
554+ .expected_type_id = TypeId::kUuid ,
555+ .expected_string = " 123e4567-e89b-12d3-a456-426614174000" },
513556 BasicLiteralTestParam{
514557 .test_name = " Binary" ,
515558 .literal = Literal::Binary (std::vector<uint8_t >{0x01 , 0x02 , 0x03 , 0xFF }),
@@ -563,6 +606,10 @@ INSTANTIATE_TEST_SUITE_P(
563606 .small_literal = Literal::Double (1.5 ),
564607 .large_literal = Literal::Double (2.5 ),
565608 .equal_literal = Literal::Double (1.5 )},
609+ ComparisonLiteralTestParam{.test_name = " Decimal" ,
610+ .small_literal = Literal::Decimal (123456 , 6 , 2 ),
611+ .large_literal = Literal::Decimal (234567 , 6 , 2 ),
612+ .equal_literal = Literal::Decimal (123456 , 6 , 2 )},
566613 ComparisonLiteralTestParam{.test_name = " String" ,
567614 .small_literal = Literal::String (" apple" ),
568615 .large_literal = Literal::String (" banana" ),
0 commit comments