github.com/seeker-insurance/kit@v0.0.13/random/random_test.go (about) 1 package random 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 const iterations = 250 10 11 /* 12 Note: it's not possible to test whether or not something is "really" random. 13 These tests have a very, very small chance of failing by chance. 14 You're more likely to win the lottery. 15 */ 16 func TestRandomBytes(t *testing.T) { 17 var seen = make([][]byte, 0, iterations) 18 for i := 0; i < iterations; i++ { 19 b, err := RandomBytes(10) 20 assert.NoError(t, err) 21 for _, prev := range seen { 22 assert.NotEqual(t, prev, b, "should not repeat") 23 } 24 seen = append(seen, b) 25 } 26 } 27 28 func TestRandomString(t *testing.T) { 29 var seen = make([]string, 0, iterations) 30 for i := 0; i < iterations; i++ { 31 s, err := RandomString(10) 32 assert.NoError(t, err) 33 for _, prev := range seen { 34 assert.NotEqual(t, prev, s, "should not repeat") 35 } 36 seen = append(seen, s) 37 } 38 } 39 40 func TestInt64s(t *testing.T) { 41 var seen = make([][]int64, 0, iterations) 42 for i := 0; i < iterations; i++ { 43 s, err := Int64s(10) 44 assert.NoError(t, err) 45 for _, prev := range seen { 46 assert.NotEqual(t, prev, s, "should not repeat") 47 } 48 seen = append(seen, s) 49 } 50 } 51 52 func Test_uint64(t *testing.T) { 53 const ( 54 b0 = 0x01 55 b1 = 0x02 56 b2 = 0x03 57 b3 = 0x04 58 b4 = 0x05 59 b5 = 0x06 60 b6 = 0x07 61 b7 = 0x08 62 63 want uint64 = b0<<000 + b1<<010 + b2<<020 + 64 b3<<030 + b4<<040 + b5<<050 + b6<<060 + b7<<070 65 ) 66 got := _uint64([]byte{b0, b1, b2, b3, b4, b5, b6, b7}) 67 assert.Equal(t, want, got) 68 }