38 lines
1.2 KiB
Go
38 lines
1.2 KiB
Go
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")
|
|
}
|