@@ -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, LongCastToIntOverflow) {
@@ -203,11 +203,11 @@ TEST(LiteralTest, FloatComparison) {
203203}
204204
205205TEST (LiteralTest, FloatCastTo) {
206- auto float_literal = Literal::Float (3 . 14f );
206+ auto float_literal = Literal::Float (2 . 0f );
207207
208208 // Cast to Double
209209 AssertCastSucceeds (float_literal.CastTo (iceberg::float64 ()), TypeId::kDouble ,
210- static_cast <double >(3 . 14f ));
210+ static_cast <double >(2 . 0f ));
211211}
212212
213213// Double type tests
@@ -233,10 +233,10 @@ TEST(LiteralTest, DoubleComparison) {
233233}
234234
235235TEST (LiteralTest, DoubleCastTo) {
236- auto double_literal = Literal::Double (3.14 );
236+ auto double_literal = Literal::Double (2.0 );
237237
238238 // Cast to Float
239- AssertCastSucceeds (double_literal.CastTo (iceberg::float32 ()), TypeId::kFloat , 3 . 14f );
239+ AssertCastSucceeds (double_literal.CastTo (iceberg::float32 ()), TypeId::kFloat , 2 . 0f );
240240}
241241
242242TEST (LiteralTest, DoubleCastToOverflow) {
@@ -263,8 +263,8 @@ TEST(LiteralTest, StringBasics) {
263263 EXPECT_EQ (string_literal.type ()->type_id (), TypeId::kString );
264264 EXPECT_EQ (empty_string.type ()->type_id (), TypeId::kString );
265265
266- EXPECT_EQ (string_literal.ToString (), " hello world" );
267- EXPECT_EQ (empty_string.ToString (), " " );
266+ EXPECT_EQ (string_literal.ToString (), " \" hello world\" " );
267+ EXPECT_EQ (empty_string.ToString (), " \"\" " );
268268}
269269
270270TEST (LiteralTest, StringComparison) {
@@ -304,6 +304,18 @@ TEST(LiteralTest, BinaryComparison) {
304304 EXPECT_EQ (binary2 <=> binary1, std::partial_ordering::greater);
305305}
306306
307+ TEST (LiteralTest, BinaryCastTo) {
308+ std::vector<uint8_t > data4 = {0x01 , 0x02 , 0x03 , 0x04 };
309+ auto binary_literal = Literal::Binary (data4);
310+
311+ // Cast to Fixed with matching length
312+ AssertCastSucceeds (binary_literal.CastTo (iceberg::fixed (4 )), TypeId::kFixed , data4);
313+
314+ // Cast to Fixed with different length should fail
315+ EXPECT_THAT (binary_literal.CastTo (iceberg::fixed (5 )),
316+ IsError (ErrorKind::kInvalidArgument ));
317+ }
318+
307319// Fixed type tests
308320TEST (LiteralTest, FixedBasics) {
309321 std::vector<uint8_t > data = {0x01 , 0x02 , 0x03 , 0xFF };
@@ -331,6 +343,20 @@ TEST(LiteralTest, FixedComparison) {
331343 EXPECT_EQ (fixed2 <=> fixed1, std::partial_ordering::greater);
332344}
333345
346+ TEST (LiteralTest, FixedCastTo) {
347+ std::vector<uint8_t > data4 = {0x01 , 0x02 , 0x03 , 0x04 };
348+ auto fixed_literal = Literal::Fixed (data4);
349+
350+ // Cast to Binary
351+ AssertCastSucceeds (fixed_literal.CastTo (iceberg::binary ()), TypeId::kBinary , data4);
352+
353+ // Cast to Fixed with same length
354+ AssertCastSucceeds (fixed_literal.CastTo (iceberg::fixed (4 )), TypeId::kFixed , data4);
355+
356+ // Cast to Fixed with different length should fail
357+ EXPECT_THAT (fixed_literal.CastTo (iceberg::fixed (5 )), IsError (ErrorKind::kNotSupported ));
358+ }
359+
334360// Date type tests
335361TEST (LiteralTest, DateBasics) {
336362 auto date_literal = Literal::Date (19489 ); // May 15, 2023
@@ -421,32 +447,6 @@ TEST(LiteralTest, TimestampTzComparison) {
421447 EXPECT_EQ (timestamptz2 <=> timestamptz1, std::partial_ordering::greater);
422448}
423449
424- TEST (LiteralTest, BinaryCastTo) {
425- std::vector<uint8_t > data4 = {0x01 , 0x02 , 0x03 , 0x04 };
426- auto binary_literal = Literal::Binary (data4);
427-
428- // Cast to Fixed with matching length
429- AssertCastSucceeds (binary_literal.CastTo (iceberg::fixed (4 )), TypeId::kFixed , data4);
430-
431- // Cast to Fixed with different length should fail
432- EXPECT_THAT (binary_literal.CastTo (iceberg::fixed (5 )),
433- IsError (ErrorKind::kInvalidArgument ));
434- }
435-
436- TEST (LiteralTest, FixedCastTo) {
437- std::vector<uint8_t > data4 = {0x01 , 0x02 , 0x03 , 0x04 };
438- auto fixed_literal = Literal::Fixed (data4);
439-
440- // Cast to Binary
441- AssertCastSucceeds (fixed_literal.CastTo (iceberg::binary ()), TypeId::kBinary , data4);
442-
443- // Cast to Fixed with same length
444- AssertCastSucceeds (fixed_literal.CastTo (iceberg::fixed (4 )), TypeId::kFixed , data4);
445-
446- // Cast to Fixed with different length should fail
447- EXPECT_THAT (fixed_literal.CastTo (iceberg::fixed (5 )), IsError (ErrorKind::kNotSupported ));
448- }
449-
450450// Cross-type comparison tests
451451TEST (LiteralTest, CrossTypeComparison) {
452452 auto int_literal = Literal::Int (42 );
@@ -456,22 +456,18 @@ TEST(LiteralTest, CrossTypeComparison) {
456456 EXPECT_EQ (int_literal <=> string_literal, std::partial_ordering::unordered);
457457}
458458
459- // Special value tests
460- TEST (LiteralTest, SpecialValues ) {
459+ // Same type cast tests
460+ TEST (LiteralTest, SameTypeCast ) {
461461 auto int_literal = Literal::Int (42 );
462462
463- EXPECT_FALSE (int_literal.IsAboveMax ());
464- EXPECT_FALSE (int_literal.IsBelowMin ());
463+ AssertCastSucceeds (int_literal.CastTo (iceberg::int32 ()), TypeId::kInt , 42 );
465464}
466465
467- // Same type cast test
468- TEST (LiteralTest, SameTypeCast ) {
466+ // Special value tests
467+ TEST (LiteralTest, SpecialValues ) {
469468 auto int_literal = Literal::Int (42 );
470-
471- auto same_type_result = int_literal.CastTo (iceberg::int32 ());
472- ASSERT_THAT (same_type_result, IsOk ());
473- EXPECT_EQ (same_type_result->type ()->type_id (), TypeId::kInt );
474- EXPECT_EQ (same_type_result->ToString (), " 42" );
469+ EXPECT_FALSE (int_literal.IsAboveMax ());
470+ EXPECT_FALSE (int_literal.IsBelowMin ());
475471}
476472
477473// Float special values tests
0 commit comments