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  }