11package types_test
22
33import (
4- "errors"
54 "testing"
65
76 "github.com/stretchr/testify/require"
87
8+ math_utils "github.com/neutron-org/neutron/v8/utils/math"
99 "github.com/neutron-org/neutron/v8/x/dex/types"
1010)
1111
1212func TestCalcTickIndexFromPrice (t * testing.T ) {
1313 for _ , tc := range []struct {
1414 desc string
1515 tick int64
16+ err bool
1617 }{
1718 {
1819 desc : "0" ,
@@ -31,16 +32,16 @@ func TestCalcTickIndexFromPrice(t *testing.T) {
3132 tick : 100000 ,
3233 },
3334 {
34- desc : "-100000 " ,
35- tick : - 100000 ,
35+ desc : "-100051 " ,
36+ tick : - 100051 ,
3637 },
3738 {
38- desc : "-100000 " ,
39- tick : - 100000 ,
39+ desc : "-200100 " ,
40+ tick : - 2000100 ,
4041 },
4142 {
42- desc : "-100000 " ,
43- tick : - 100000 ,
43+ desc : "400000 " ,
44+ tick : 400000 ,
4445 },
4546 {
4647 desc : "MaxTickExp" ,
@@ -53,23 +54,37 @@ func TestCalcTickIndexFromPrice(t *testing.T) {
5354 {
5455 desc : "GT MaxTickExp" ,
5556 tick : int64 (types .MaxTickExp ) + 1 ,
57+ err : true ,
5658 },
5759 {
5860 desc : "LT MinTickExp" ,
5961 tick : - 1 * int64 (types .MaxTickExp ) - 1 ,
62+ err : true ,
6063 },
6164 } {
6265 t .Run (tc .desc , func (t * testing.T ) {
6366 price , err1 := types .CalcPrice (tc .tick )
6467 val , err2 := types .CalcTickIndexFromPrice (price )
65- if errors .Is (err1 , types .ErrTickOutsideRange ) {
66- require .ErrorIs (t , err2 , types .ErrPriceOutsideRange )
68+ if err1 != nil {
69+ require .Error (t , err1 )
70+ require .Error (t , err2 )
6771 } else {
68- // Only expected error is ErrTickOutsideRange.
6972 // If we are not outside the tick range we should TestCalcTickIndexFromPrice to never throw
73+ require .NoError (t , err1 )
7074 require .NoError (t , err2 )
7175 require .Equal (t , tc .tick , val )
7276 }
7377 })
7478 }
7579}
80+ func TestPriceDups (t * testing.T ) {
81+ prevPrice := math_utils .ZeroPrecDec ()
82+ for i := 0 ; i >= int (types .MaxTickExp )* - 1 ; i -- {
83+ price , err := types .CalcPrice (int64 (i ))
84+ require .NoError (t , err )
85+ if price .Equal (prevPrice ) {
86+ t .Fatalf ("Price (%v) %s is equal to previous price %s" , i , price , prevPrice )
87+ }
88+ prevPrice = price
89+ }
90+ }
0 commit comments