@@ -40,7 +40,7 @@ void AssertCastSucceeds(const Result<Literal>& result, TypeId expected_type_id,
4040 ASSERT_THAT (result, IsOk ());
4141 EXPECT_EQ (result->type ()->type_id (), expected_type_id);
4242 ASSERT_NO_THROW (EXPECT_EQ (std::get<T>(result->value ()), expected_value))
43- << " Value type mismatch in std::get. Expected type for TypeId "
43+ << " Type mismatch in std::get. Expected type for TypeId "
4444 << static_cast <int >(expected_type_id);
4545}
4646
@@ -146,15 +146,15 @@ TEST(LiteralTest, LongCastTo) {
146146
147147 // Cast to Time
148148 AssertCastSucceeds (long_literal.CastTo (iceberg::time ()), TypeId::kTime ,
149- static_cast <int64_t >(42L ));
149+ static_cast <int64_t >(42 ));
150150
151151 // Cast to Timestamp
152152 AssertCastSucceeds (long_literal.CastTo (iceberg::timestamp ()), TypeId::kTimestamp ,
153- static_cast <int64_t >(42L ));
153+ static_cast <int64_t >(42 ));
154154
155155 // Cast to TimestampTz
156156 AssertCastSucceeds (long_literal.CastTo (iceberg::timestamp_tz ()), TypeId::kTimestampTz ,
157- static_cast <int64_t >(42L ));
157+ static_cast <int64_t >(42 ));
158158}
159159
160160TEST (LiteralTest, LongCastToOverflow) {
@@ -204,11 +204,11 @@ TEST(LiteralTest, FloatComparison) {
204204}
205205
206206TEST (LiteralTest, FloatCastTo) {
207- auto float_literal = Literal::Float (3 . 14f );
207+ auto float_literal = Literal::Float (2 . 0f );
208208
209209 // Cast to Double
210210 AssertCastSucceeds (float_literal.CastTo (iceberg::float64 ()), TypeId::kDouble ,
211- static_cast <double >(3 . 14f ));
211+ static_cast <double >(2 . 0f ));
212212}
213213
214214// Double type tests
@@ -234,10 +234,10 @@ TEST(LiteralTest, DoubleComparison) {
234234}
235235
236236TEST (LiteralTest, DoubleCastTo) {
237- auto double_literal = Literal::Double (3.14 );
237+ auto double_literal = Literal::Double (2.0 );
238238
239239 // Cast to Float
240- AssertCastSucceeds (double_literal.CastTo (iceberg::float32 ()), TypeId::kFloat , 3 . 14f );
240+ AssertCastSucceeds (double_literal.CastTo (iceberg::float32 ()), TypeId::kFloat , 2 . 0f );
241241}
242242
243243TEST (LiteralTest, DoubleCastToOverflow) {
@@ -264,8 +264,8 @@ TEST(LiteralTest, StringBasics) {
264264 EXPECT_EQ (string_literal.type ()->type_id (), TypeId::kString );
265265 EXPECT_EQ (empty_string.type ()->type_id (), TypeId::kString );
266266
267- EXPECT_EQ (string_literal.ToString (), " hello world" );
268- EXPECT_EQ (empty_string.ToString (), " " );
267+ EXPECT_EQ (string_literal.ToString (), " \" hello world\" " );
268+ EXPECT_EQ (empty_string.ToString (), " \"\" " );
269269}
270270
271271TEST (LiteralTest, StringComparison) {
@@ -305,6 +305,18 @@ TEST(LiteralTest, BinaryComparison) {
305305 EXPECT_EQ (binary2 <=> binary1, std::partial_ordering::greater);
306306}
307307
308+ TEST (LiteralTest, BinaryCastTo) {
309+ std::vector<uint8_t > data4 = {0x01 , 0x02 , 0x03 , 0x04 };
310+ auto binary_literal = Literal::Binary (data4);
311+
312+ // Cast to Fixed with matching length
313+ AssertCastSucceeds (binary_literal.CastTo (iceberg::fixed (4 )), TypeId::kFixed , data4);
314+
315+ // Cast to Fixed with different length should fail
316+ EXPECT_THAT (binary_literal.CastTo (iceberg::fixed (5 )),
317+ IsError (ErrorKind::kInvalidArgument ));
318+ }
319+
308320// Fixed type tests
309321TEST (LiteralTest, FixedBasics) {
310322 std::vector<uint8_t > data = {0x01 , 0x02 , 0x03 , 0xFF };
@@ -332,6 +344,20 @@ TEST(LiteralTest, FixedComparison) {
332344 EXPECT_EQ (fixed2 <=> fixed1, std::partial_ordering::greater);
333345}
334346
347+ TEST (LiteralTest, FixedCastTo) {
348+ std::vector<uint8_t > data4 = {0x01 , 0x02 , 0x03 , 0x04 };
349+ auto fixed_literal = Literal::Fixed (data4);
350+
351+ // Cast to Binary
352+ AssertCastSucceeds (fixed_literal.CastTo (iceberg::binary ()), TypeId::kBinary , data4);
353+
354+ // Cast to Fixed with same length
355+ AssertCastSucceeds (fixed_literal.CastTo (iceberg::fixed (4 )), TypeId::kFixed , data4);
356+
357+ // Cast to Fixed with different length should fail
358+ EXPECT_THAT (fixed_literal.CastTo (iceberg::fixed (5 )), IsError (ErrorKind::kNotSupported ));
359+ }
360+
335361// Date type tests
336362TEST (LiteralTest, DateBasics) {
337363 auto date_literal = Literal::Date (19489 ); // May 15, 2023
@@ -422,32 +448,6 @@ TEST(LiteralTest, TimestampTzComparison) {
422448 EXPECT_EQ (timestamptz2 <=> timestamptz1, std::partial_ordering::greater);
423449}
424450
425- TEST (LiteralTest, BinaryCastTo) {
426- std::vector<uint8_t > data4 = {0x01 , 0x02 , 0x03 , 0x04 };
427- auto binary_literal = Literal::Binary (data4);
428-
429- // Cast to Fixed with matching length
430- AssertCastSucceeds (binary_literal.CastTo (iceberg::fixed (4 )), TypeId::kFixed , data4);
431-
432- // Cast to Fixed with different length should fail
433- EXPECT_THAT (binary_literal.CastTo (iceberg::fixed (5 )),
434- IsError (ErrorKind::kInvalidArgument ));
435- }
436-
437- TEST (LiteralTest, FixedCastTo) {
438- std::vector<uint8_t > data4 = {0x01 , 0x02 , 0x03 , 0x04 };
439- auto fixed_literal = Literal::Fixed (data4);
440-
441- // Cast to Binary
442- AssertCastSucceeds (fixed_literal.CastTo (iceberg::binary ()), TypeId::kBinary , data4);
443-
444- // Cast to Fixed with same length
445- AssertCastSucceeds (fixed_literal.CastTo (iceberg::fixed (4 )), TypeId::kFixed , data4);
446-
447- // Cast to Fixed with different length should fail
448- EXPECT_THAT (fixed_literal.CastTo (iceberg::fixed (5 )), IsError (ErrorKind::kNotSupported ));
449- }
450-
451451// Cross-type comparison tests
452452TEST (LiteralTest, CrossTypeComparison) {
453453 auto int_literal = Literal::Int (42 );
@@ -457,22 +457,18 @@ TEST(LiteralTest, CrossTypeComparison) {
457457 EXPECT_EQ (int_literal <=> string_literal, std::partial_ordering::unordered);
458458}
459459
460- // Special value tests
461- TEST (LiteralTest, SpecialValues ) {
460+ // Same type cast tests
461+ TEST (LiteralTest, SameTypeCast ) {
462462 auto int_literal = Literal::Int (42 );
463463
464- EXPECT_FALSE (int_literal.IsAboveMax ());
465- EXPECT_FALSE (int_literal.IsBelowMin ());
464+ AssertCastSucceeds (int_literal.CastTo (iceberg::int32 ()), TypeId::kInt , 42 );
466465}
467466
468- // Same type cast test
469- TEST (LiteralTest, SameTypeCast ) {
467+ // Special value tests
468+ TEST (LiteralTest, SpecialValues ) {
470469 auto int_literal = Literal::Int (42 );
471-
472- auto same_type_result = int_literal.CastTo (iceberg::int32 ());
473- ASSERT_THAT (same_type_result, IsOk ());
474- EXPECT_EQ (same_type_result->type ()->type_id (), TypeId::kInt );
475- EXPECT_EQ (same_type_result->ToString (), " 42" );
470+ EXPECT_FALSE (int_literal.IsAboveMax ());
471+ EXPECT_FALSE (int_literal.IsBelowMin ());
476472}
477473
478474// Float special values tests
0 commit comments