github.com/0chain/gosdk@v1.17.11/core/common/misc_test.go (about) 1 package common 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestFormat(t *testing.T) { 10 token := Balance(129382129321) 11 formattedToken, err := token.Format(ZCN) 12 require.Equal(t, "12.938 ZCN", formattedToken) 13 require.NoError(t, err) 14 15 formattedToken, err = token.Format(MZCN) 16 require.Equal(t, "12938.213 mZCN", formattedToken) 17 require.NoError(t, err) 18 19 formattedToken, err = token.Format(UZCN) 20 require.Equal(t, "12938212.932 uZCN", formattedToken) 21 require.NoError(t, err) 22 23 formattedToken, err = token.Format(SAS) 24 require.Equal(t, "129382129321 SAS", formattedToken) 25 require.NoError(t, err) 26 27 _, err = token.Format(5) 28 require.EqualError(t, err, "undefined balance unit: 5") 29 } 30 31 func TestFormatStatic(t *testing.T) { 32 amount := int64(129382129321) 33 zcnAmount, err := FormatStatic(amount, "ZCN") 34 require.Equal(t, "12.938 ZCN", zcnAmount) 35 require.NoError(t, err) 36 37 mZCNAmount, err := FormatStatic(amount, "mZCN") 38 require.Equal(t, "12938.213 mZCN", mZCNAmount) 39 require.NoError(t, err) 40 41 uZCN, err := FormatStatic(amount, "uZCN") 42 require.Equal(t, "12938212.932 uZCN", uZCN) 43 require.NoError(t, err) 44 45 sas, err := FormatStatic(amount, "SAS") 46 require.Equal(t, "129382129321 SAS", sas) 47 require.NoError(t, err) 48 } 49 50 func TestAutoFormat(t *testing.T) { 51 autoFormatValue, err := AutoFormatStatic(239) 52 require.Equal(t, "239 SAS", autoFormatValue) 53 require.NoError(t, err) 54 55 autoFormatValue, err = AutoFormatStatic(27361) 56 require.Equal(t, "2.736 uZCN", autoFormatValue) 57 require.NoError(t, err) 58 59 autoFormatValue, err = AutoFormatStatic(23872013) 60 require.Equal(t, "2.387 mZCN", autoFormatValue) 61 require.NoError(t, err) 62 63 autoFormatValue, err = AutoFormatStatic(203827162834) 64 require.Equal(t, "20.383 ZCN", autoFormatValue) 65 require.NoError(t, err) 66 } 67 68 func TestAutoFormatStatic(t *testing.T) { 69 autoFormatValue, err := Balance(239).AutoFormat() 70 require.Equal(t, "239 SAS", autoFormatValue) 71 require.NoError(t, err) 72 73 autoFormatValue, err = Balance(27361).AutoFormat() 74 require.Equal(t, "2.736 uZCN", autoFormatValue) 75 require.NoError(t, err) 76 77 autoFormatValue, err = Balance(23872013).AutoFormat() 78 require.Equal(t, "2.387 mZCN", autoFormatValue) 79 require.NoError(t, err) 80 81 autoFormatValue, err = Balance(203827162834).AutoFormat() 82 require.Equal(t, "20.383 ZCN", autoFormatValue) 83 require.NoError(t, err) 84 } 85 86 func TestParseBalance(t *testing.T) { 87 b, err := ParseBalance("12.938 ZCN") 88 require.NoError(t, err) 89 require.Equal(t, Balance(12.938*1e10), b) 90 91 b, err = ParseBalance("12.938 mzcn") 92 require.NoError(t, err) 93 require.Equal(t, Balance(12.938*1e7), b) 94 95 b, err = ParseBalance("12.938 uZCN") 96 require.NoError(t, err) 97 require.Equal(t, Balance(12.938*1e4), b) 98 99 b, err = ParseBalance("122389 sas") 100 require.NoError(t, err) 101 require.Equal(t, Balance(122389*1e0), b) 102 103 _, err = ParseBalance("10 ") 104 require.EqualError(t, err, "invalid input: 10 ") 105 106 _, err = ParseBalance("10 zwe") 107 require.EqualError(t, err, "invalid input: 10 zwe") 108 109 _, err = ParseBalance(" 10 zcn ") 110 require.EqualError(t, err, "invalid input: 10 zcn ") 111 } 112 113 func TestToBalance(t *testing.T) { 114 expectedBalance := Balance(20100000000) 115 balance, err := ToBalance(2.01) 116 require.Equal(t, expectedBalance, balance) 117 require.NoError(t, err) 118 119 expectedBalance = Balance(30099999999) 120 balance, err = ToBalance(3.0099999999) 121 require.Equal(t, expectedBalance, balance) 122 require.NoError(t, err) 123 } 124 125 func TestToToken(t *testing.T) { 126 b := Balance(12.938 * 1e12) 127 token, err := b.ToToken() 128 require.Equal(t, 1293.8, token) 129 require.NoError(t, err) 130 131 b = Balance(12.938 * 1e5) 132 token, err = b.ToToken() 133 require.Equal(t, 0.00012938, token) 134 require.NoError(t, err) 135 }