-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrand_test.go
65 lines (54 loc) · 3.17 KB
/
rand_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package gotrax
import (
"bytes"
"crypto/rand"
. "gopkg.in/check.v1"
)
func (s *GotraxSuite) Test_RandomInto_fillsTheBuffer(c *C) {
b := make([]byte, 3)
res := RandomInto(ReaderIntoWithRandom(FixedRand([]string{"ABCDEF"})), b)
c.Assert(res, IsNil)
c.Assert(b, DeepEquals, []byte{0xAB, 0xCD, 0xEF})
}
func (s *GotraxSuite) Test_RandomInto_returnsErrorOnShortRead(c *C) {
b := make([]byte, 15)
buf := bytes.NewBuffer([]byte{0x42, 0x15})
res := RandomInto(ReaderIntoWithRandom(buf), b)
c.Assert(res, ErrorMatches, "short read from random source")
}
func (s *GotraxSuite) Test_DefaultRandom_returnsWithRandomWithRandReader(c *C) {
d := DefaultRandom()
r := d.(*readerWithRandom).r
c.Assert(r, Equals, rand.Reader)
}
func (s *GotraxSuite) Test_RandomUint32_GeneratesARandomNumber(c *C) {
n := RandomUint32(ReaderIntoWithRandom(FixedRand([]string{"ABCDEF112233"})))
c.Assert(n, Equals, uint32(0xABCDEF11))
}
func (s *GotraxSuite) Test_FixedRandBytes_returnsAWithRandom(c *C) {
v := FixedRandBytes([]byte{0x01, 0x02}, []byte{0x03, 0x04})
rr := v.(*fixedRandBytesReader)
c.Assert(rr.at, Equals, 0)
c.Assert(rr.data, DeepEquals, [][]byte{[]byte{0x01, 0x02}, []byte{0x03, 0x04}})
}
func (s *GotraxSuite) Test_readerWithRandom_RandReader_returnsTheGivenReader(c *C) {
v := &readerWithRandom{r: rand.Reader}
c.Assert(v.RandReader(), Equals, rand.Reader)
}
func (s *GotraxSuite) Test_fixedRandBytesReader_RandReader_returnsItself(c *C) {
v := FixedRandBytes([]byte{0x01, 0x02}, []byte{0x03, 0x04})
rr := v.(*fixedRandBytesReader)
val := v.RandReader()
c.Assert(val, Equals, rr)
}
func (s *GotraxSuite) Test_fixedRandBytesReader_willWrapAround(c *C) {
b := make([]byte, 15)
v := FixedRandBytes([]byte{0x01, 0x02}, []byte{0x03, 0x04})
res := RandomInto(v, b)
c.Assert(res, IsNil)
c.Assert(b, DeepEquals, []byte{0x1, 0x2, 0x3, 0x4, 0x1, 0x2, 0x3, 0x4, 0x1, 0x2, 0x3, 0x4, 0x1, 0x2, 0x3})
}
func (s *GotraxSuite) Test_FixtureRand_ReturnsAWithRandomSeededWithFixtureData(c *C) {
v := FixtureRand()
c.Assert(v.(*fixedRandBytesReader).data[0], DeepEquals, []byte{0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd, 0xab, 0xcd})
}