@@ -717,14 +717,24 @@ TEST(DecimalTest, Rescale) {
717717
718718TEST (DecimalTest, Compare) {
719719 // max positive unscaled value
720- ASSERT_EQ (Decimal::Compare (Decimal (" 170141183460469231731687303715884105727" ),
721- Decimal (" 170141183460469231731687303715884105727" ), 2 , 3 ),
720+ // 10^38 - 1 scale cause overflow
721+ ASSERT_EQ (Decimal::Compare (Decimal (" 99999999999999999999999999999999999999" ),
722+ Decimal (" 99999999999999999999999999999999999999" ), 2 , 3 ),
722723 std::partial_ordering::greater);
724+ // 10^37 - 1 scale no overflow
725+ ASSERT_EQ (Decimal::Compare (Decimal (" 9999999999999999999999999999999999999" ),
726+ Decimal (" 99999999999999999999999999999999999999" ), 2 , 3 ),
727+ std::partial_ordering::less);
723728
724729 // min negative unscaled value
725- ASSERT_EQ (Decimal::Compare (Decimal (" -170141183460469231731687303715884105728" ),
726- Decimal (" -170141183460469231731687303715884105728" ), 2 , 3 ),
730+ // -10^38 + 1 scale cause overflow
731+ ASSERT_EQ (Decimal::Compare (Decimal (" -99999999999999999999999999999999999999" ),
732+ Decimal (" -99999999999999999999999999999999999999" ), 2 , 3 ),
727733 std::partial_ordering::less);
734+ // -10^37 + 1 scale no overflow
735+ ASSERT_EQ (Decimal::Compare (Decimal (" -9999999999999999999999999999999999999" ),
736+ Decimal (" -99999999999999999999999999999999999999" ), 2 , 3 ),
737+ std::partial_ordering::greater);
728738
729739 // equal values with different scales
730740 ASSERT_EQ (Decimal::Compare (Decimal (" 123456789" ), Decimal (" 1234567890" ), 2 , 3 ),
0 commit comments