package uniswap import ( "math/big" "testing" "github.com/holiman/uint256" "github.com/stretchr/testify/assert" ) func TestOptimizedFunctionAccuracy(t *testing.T) { // Test SqrtPriceX96ToPrice vs SqrtPriceX96ToPriceOptimized sqrtPriceX96 := new(big.Int) sqrtPriceX96.SetString("79228162514264337593543950336", 10) // 2^96 (price = 1.0) originalResult := SqrtPriceX96ToPrice(sqrtPriceX96) sqrtPriceX96Uint256 := uint256.MustFromBig(sqrtPriceX96) optimizedResult := SqrtPriceX96ToPriceOptimized(sqrtPriceX96Uint256) // Compare the results originalFloat, _ := originalResult.Float64() optimizedFloat, _ := optimizedResult.Float64() assert.InDelta(t, originalFloat, optimizedFloat, 0.0001, "SqrtPriceX96ToPrice and SqrtPriceX96ToPriceOptimized should produce similar results") } func TestPriceToSqrtPriceX96Accuracy(t *testing.T) { // Test PriceToSqrtPriceX96 vs PriceToSqrtPriceX96Optimized price := new(big.Float).SetFloat64(1.0) originalResult := PriceToSqrtPriceX96(price) optimizedResult := PriceToSqrtPriceX96Optimized(price) // Compare the results diff := new(big.Int).Sub(originalResult, optimizedResult.ToBig()) assert.True(t, diff.Cmp(big.NewInt(1000000000000)) < 0, "PriceToSqrtPriceX96 and PriceToSqrtPriceX96Optimized should produce similar results") } func TestTickToSqrtPriceX96Accuracy(t *testing.T) { // Test TickToSqrtPriceX96 vs TickToSqrtPriceX96Optimized tick := 100000 originalResult := TickToSqrtPriceX96(tick) optimizedResult := TickToSqrtPriceX96Optimized(tick) // Compare the results diff := new(big.Int).Sub(originalResult, optimizedResult.ToBig()) assert.True(t, diff.Cmp(big.NewInt(1000000000000)) < 0, "TickToSqrtPriceX96 and TickToSqrtPriceX96Optimized should produce similar results") }