github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/encoding/fixedn/decimal_test.go (about) 1 package fixedn 2 3 import ( 4 "math/big" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestDecimalFromStringGood(t *testing.T) { 11 var testCases = []struct { 12 bi *big.Int 13 prec int 14 s string 15 }{ 16 {big.NewInt(123), 2, "1.23"}, 17 {big.NewInt(12300), 2, "123"}, 18 {big.NewInt(1234500000), 8, "12.345"}, 19 {big.NewInt(-12345), 3, "-12.345"}, 20 {big.NewInt(35), 8, "0.00000035"}, 21 {big.NewInt(1230), 5, "0.0123"}, 22 {big.NewInt(123456789), 20, "0.00000000000123456789"}, 23 } 24 for _, tc := range testCases { 25 t.Run(tc.s, func(t *testing.T) { 26 s := ToString(tc.bi, tc.prec) 27 require.Equal(t, tc.s, s) 28 29 bi, err := FromString(s, tc.prec) 30 require.NoError(t, err) 31 require.Equal(t, tc.bi, bi) 32 }) 33 } 34 } 35 36 func TestDecimalFromStringBad(t *testing.T) { 37 var errCases = []struct { 38 s string 39 prec int 40 }{ 41 {"", 0}, 42 {"", 1}, 43 {"12A", 1}, 44 {"12.345", 2}, 45 {"12.3A", 2}, 46 } 47 for _, tc := range errCases { 48 t.Run(tc.s, func(t *testing.T) { 49 _, err := FromString(tc.s, tc.prec) 50 require.Error(t, err) 51 }) 52 } 53 }