diff --git a/test/src/lib/LibDecimalFloat.eq.t.sol b/test/src/lib/LibDecimalFloat.eq.t.sol index ca2760e6..e5b087df 100644 --- a/test/src/lib/LibDecimalFloat.eq.t.sol +++ b/test/src/lib/LibDecimalFloat.eq.t.sol @@ -41,4 +41,15 @@ contract LibDecimalFloatEqTest is Test { assertEq(eq, !lt && !gt); } + + /// Test some zeros. + function testEqZero(int32 exponent) external pure { + Float wrapZero = Float.wrap(0); + Float packZeroBasic = LibDecimalFloat.packLossless(0, 0); + Float packZero = LibDecimalFloat.packLossless(0, exponent); + + assertTrue(wrapZero.eq(packZero)); + assertTrue(wrapZero.eq(packZeroBasic)); + assertEq(Float.unwrap(wrapZero), Float.unwrap(packZeroBasic)); + } } diff --git a/test/src/lib/LibDecimalFloat.lt.t.sol b/test/src/lib/LibDecimalFloat.lt.t.sol index bbe97dd0..dac37115 100644 --- a/test/src/lib/LibDecimalFloat.lt.t.sol +++ b/test/src/lib/LibDecimalFloat.lt.t.sol @@ -10,6 +10,20 @@ import {Test} from "forge-std/Test.sol"; contract LibDecimalFloatLtTest is Test { using LibDecimalFloat for Float; + function checkExample( + int256 signedCoefficientA, + int32 exponentA, + int256 signedCoefficientB, + int32 exponentB, + bool expected + ) internal pure { + Float a = LibDecimalFloat.packLossless(signedCoefficientA, exponentA); + Float b = LibDecimalFloat.packLossless(signedCoefficientB, exponentB); + + bool actual = LibDecimalFloat.lt(a, b); + assertEq(actual, expected); + } + function testLtReference(Float a, Float b) external pure { bool actual = LibDecimalFloat.lt(a, b); (int256 signedCoefficientA, int256 exponentA) = a.unpack(); @@ -139,4 +153,8 @@ contract LibDecimalFloatLtTest is Test { LibDecimalFloat.packLossless(1, type(int32).max), LibDecimalFloat.packLossless(1, type(int32).min) ); } + + function testLtExamples() external pure { + checkExample(999999999999974209482711874742541185097679753153111, -51, 0, 0, false); + } }