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  }