package uniswap import ( "math/big" "testing" "github.com/stretchr/testify/assert" ) func TestUnifiedConstantsAccuracy(t *testing.T) { // Initialize constants InitConstants() // Test that our global constants have the expected values expectedQ96 := new(big.Int).Exp(big.NewInt(2), big.NewInt(96), nil) expectedQ192 := new(big.Int).Exp(big.NewInt(2), big.NewInt(192), nil) assert.Equal(t, expectedQ96, GetQ96(), "Q96 constant should be 2^96") assert.Equal(t, expectedQ192, GetQ192(), "Q192 constant should be 2^192") assert.Equal(t, GetLnBase(), 9.999500033329732e-05, "LnBase constant should be ln(1.0001)") assert.Equal(t, GetInvLnBase(), 1.0/GetLnBase(), "InvLnBase constant should be 1/ln(1.0001)") } func TestUnifiedConstantsPerformance(t *testing.T) { // Initialize constants first InitConstants() // Verify that calling InitConstants multiple times doesn't cause issues // (the sync.Once should ensure initialization happens only once) for i := 0; i < 10; i++ { InitConstants() } // Ensure the values are still correct after multiple init calls expectedQ96 := new(big.Int).Exp(big.NewInt(2), big.NewInt(96), nil) assert.Equal(t, expectedQ96, GetQ96(), "Q96 constant should remain consistent after multiple init calls") }