github.com/0chain/gosdk@v1.17.11/core/util/rand_test.go (about) 1 package util 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestGetRandomSlice(t *testing.T) { 10 s := []string{"hello", "world", "beuty"} 11 ns := GetRandom(s, 2) 12 if len(ns) != 2 { 13 t.Fatalf("Getrandom() failed") 14 } 15 ns = GetRandom(s, 4) 16 if len(ns) != 3 { 17 t.Fatalf("Getrandom() failed") 18 } 19 // Tests for when either len(in) = 0 or n = 0 20 s = []string{} 21 ns = GetRandom(s, 2) 22 if len(ns) != 0 { 23 t.Fatalf("Getrandom() failed") 24 } 25 s = append(s, "hello") 26 ns = GetRandom(s, 0) 27 if len(ns) != 0 { 28 t.Fatalf("Getrandom() failed") 29 } 30 } 31 32 func TestRand(t *testing.T) { 33 s := []string{"a", "b", "c", "d", "e", "f", "h", "i", "j", "k"} 34 35 r := NewRand(len(s)) 36 37 selected := make(map[int]string) 38 39 for i := 0; i < len(s); i++ { 40 index, err := r.Next() 41 42 require.Equal(t, nil, err) 43 44 _, ok := selected[index] 45 46 require.Equal(t, false, ok) 47 48 selected[index] = s[index] 49 } 50 51 for i := 0; i < len(s); i++ { 52 require.Equal(t, s[i], selected[i]) 53 } 54 55 _, err := r.Next() 56 57 require.Equal(t, ErrNoItem, err) 58 59 }