github.com/Finschia/finschia-sdk@v0.48.1/types/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/Finschia/finschia-sdk/types" 11 "github.com/Finschia/finschia-sdk/types/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 {"1_000_000-size", 1_000_000, 1_000_000}, 47 } 48 for _, tt := range tests { 49 tt := tt 50 51 t.Run(tt.name, func(t *testing.T) { 52 got := simulation.RandStringOfLength(r, tt.n) 53 require.Equal(t, tt.want, len(got)) 54 }) 55 } 56 } 57 58 func mustParseCoins(s string) sdk.Coins { 59 coins, err := sdk.ParseCoinsNormalized(s) 60 if err != nil { 61 panic(err) 62 } 63 return coins 64 }