summaryrefslogtreecommitdiff
path: root/internal/random/cryptographical_test.go
blob: 504c47863caa4e2215e68dceb4b06ced8ce06bf1 (plain)
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
66
67
68
69
70
71
72
73
74
75
package random

import (
	"math/big"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestCryptographical(t *testing.T) {
	p := &Cryptographical{}

	data := make([]byte, 10)

	n, err := p.Read(data)
	assert.Equal(t, 10, n)
	assert.NoError(t, err)

	data2, err := p.BytesErr()
	assert.NoError(t, err)
	assert.Len(t, data2, 72)

	data2 = p.Bytes()
	assert.Len(t, data2, 72)

	data2 = p.BytesCustom(74, []byte(CharSetAlphabetic))
	assert.Len(t, data2, 74)

	data2, err = p.BytesCustomErr(76, []byte(CharSetAlphabetic))
	assert.NoError(t, err)
	assert.Len(t, data2, 76)

	data2, err = p.BytesCustomErr(-5, []byte(CharSetAlphabetic))
	assert.NoError(t, err)
	assert.Len(t, data2, 72)

	strdata := p.StringCustom(10, CharSetAlphabetic)
	assert.Len(t, strdata, 10)

	strdata, err = p.StringCustomErr(11, CharSetAlphabetic)
	assert.NoError(t, err)
	assert.Len(t, strdata, 11)

	i := p.Intn(999)
	assert.GreaterOrEqual(t, i, 0)
	assert.Less(t, i, 999)

	i, err = p.IntnErr(999)
	assert.NoError(t, err)
	assert.Greater(t, i, 0)
	assert.Less(t, i, 999)

	i, err = p.IntnErr(-4)
	assert.EqualError(t, err, "n must be more than 0")
	assert.Equal(t, 0, i)

	bi := p.Int(big.NewInt(999))
	assert.GreaterOrEqual(t, bi.Int64(), int64(0))
	assert.Less(t, bi.Int64(), int64(999))

	bi = p.Int(nil)
	assert.Equal(t, int64(-1), bi.Int64())

	bi, err = p.IntErr(nil)
	assert.Nil(t, bi)
	assert.EqualError(t, err, "max is required")

	bi, err = p.IntErr(big.NewInt(-1))
	assert.Nil(t, bi)
	assert.EqualError(t, err, "max must be 1 or more")

	prime, err := p.Prime(64)
	assert.NoError(t, err)
	assert.NotNil(t, prime)
}