github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/x/simulation/rand_util_test.go (about) 1 package simulation_test 2 3 import ( 4 "math/rand" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/require" 9 10 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 11 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/simulation" 12 ) 13 14 func TestRandSubsetCoins(t *testing.T) { 15 t.Parallel() 16 tests := []struct { 17 name string 18 r *rand.Rand 19 coins sdk.Coins 20 }{ 21 {"seed=1", rand.New(rand.NewSource(1)), mustParseCoins("100stake,2testtoken")}, 22 {"seed=50", rand.New(rand.NewSource(50)), mustParseCoins("100stake,2testtoken")}, 23 {"seed=99", rand.New(rand.NewSource(99)), mustParseCoins("100stake,2testtoken")}, 24 } 25 for _, tt := range tests { 26 tt := tt 27 t.Run(tt.name, func(t *testing.T) { 28 got := simulation.RandSubsetCoins(tt.r, tt.coins) 29 gotStringRep := got.String() 30 sortedStringRep := got.Sort().String() 31 require.Equal(t, gotStringRep, sortedStringRep) 32 }) 33 } 34 } 35 36 func TestRandStringOfLength(t *testing.T) { 37 t.Parallel() 38 r := rand.New(rand.NewSource(time.Now().Unix())) 39 tests := []struct { 40 name string 41 n int 42 want int 43 }{ 44 {"0-size", 0, 0}, 45 {"10-size", 10, 10}, 46 {"10-size", 1_000_000_000, 1_000_000_000}, 47 } 48 for _, tt := range tests { 49 tt := tt 50 t.Run(tt.name, func(t *testing.T) { 51 got := simulation.RandStringOfLength(r, tt.n) 52 require.Equal(t, tt.want, len(got)) 53 }) 54 } 55 } 56 57 func mustParseCoins(s string) sdk.Coins { 58 coins, err := sdk.ParseCoins(s) 59 if err != nil { 60 panic(err) 61 } 62 return coins 63 }