201 lines
4.0 KiB
Go
201 lines
4.0 KiB
Go
package randomvalues_test
|
|
|
|
import (
|
|
b64 "encoding/base64"
|
|
"fmt"
|
|
"testing"
|
|
|
|
"fiskerinc.com/modules/testhelper"
|
|
"fiskerinc.com/modules/utils/randomvalues"
|
|
)
|
|
|
|
func TestRandomString(t *testing.T) {
|
|
instance := randomvalues.NewGenerator("")
|
|
|
|
type TestCase struct {
|
|
Length int
|
|
}
|
|
|
|
tests := []TestCase{
|
|
{
|
|
Length: 12,
|
|
},
|
|
{
|
|
Length: 32,
|
|
},
|
|
{
|
|
Length: 10,
|
|
},
|
|
{
|
|
Length: 100,
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
name := fmt.Sprintf("%v Length", test.Length)
|
|
result, err := instance.GetString(test.Length)
|
|
if err != nil {
|
|
t.Errorf(testhelper.TestErrorTemplate, name, nil, err)
|
|
}
|
|
if len(result) != test.Length {
|
|
t.Errorf(testhelper.TestErrorTemplate, name, test.Length, len(result))
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestRandomUInt64(t *testing.T) {
|
|
generated := map[uint64]int{}
|
|
instance := randomvalues.NewGenerator("")
|
|
|
|
for i := 0; i < 1000; i++ {
|
|
value, err := instance.GetUInt64()
|
|
if err != nil {
|
|
t.Errorf(testhelper.TestErrorTemplate, "RandomeUInt64", nil, err)
|
|
}
|
|
|
|
if result, ok := generated[value]; ok {
|
|
generated[value] = result + 1
|
|
} else {
|
|
generated[value] = 1
|
|
}
|
|
}
|
|
|
|
for key, value := range generated {
|
|
if value > 1 {
|
|
t.Errorf(testhelper.TestErrorTemplate, fmt.Sprintf("%v occurance", key), 1, value)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestRandomHex(t *testing.T) {
|
|
generated := map[string]int{}
|
|
instance := randomvalues.NewGenerator("")
|
|
|
|
for i := 0; i < 1000; i++ {
|
|
value, err := instance.GetHex()
|
|
if err != nil {
|
|
t.Errorf(testhelper.TestErrorTemplate, "RandomeHex", nil, err)
|
|
}
|
|
|
|
if result, ok := generated[value]; ok {
|
|
generated[value] = result + 1
|
|
} else {
|
|
generated[value] = 1
|
|
}
|
|
}
|
|
|
|
for key, value := range generated {
|
|
if value > 1 {
|
|
t.Errorf(testhelper.TestErrorTemplate, fmt.Sprintf("%v occurance", key), 1, value)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestUniformHex(t *testing.T) {
|
|
repeats := 0
|
|
|
|
generated := map[string]int{}
|
|
instance := randomvalues.NewGenerator("")
|
|
|
|
for i := 0; i < 1000000; i++ {
|
|
value, err := instance.GetUniformDistHex()
|
|
if err != nil {
|
|
t.Errorf(testhelper.TestErrorTemplate, "UniformHex", nil, err)
|
|
}
|
|
|
|
if result, ok := generated[value]; ok {
|
|
generated[value] = result + 1
|
|
repeats += 1
|
|
} else {
|
|
generated[value] = 1
|
|
}
|
|
}
|
|
|
|
for key, value := range generated {
|
|
if value > 1 {
|
|
t.Errorf(testhelper.TestErrorTemplate, fmt.Sprintf("%v occurance", key), 1, value)
|
|
}
|
|
}
|
|
|
|
if repeats > 0 {
|
|
t.Errorf(testhelper.TestErrorTemplate, "Repeated", 0, repeats)
|
|
}
|
|
}
|
|
|
|
func TestRandomBytes(t *testing.T) {
|
|
keysize := 16
|
|
generated := map[string]int{}
|
|
instance := randomvalues.NewGenerator("")
|
|
|
|
for i := 0; i < 1000; i++ {
|
|
value, err := instance.GetBytes(keysize)
|
|
if err != nil {
|
|
t.Errorf(testhelper.TestErrorTemplate, "RandomBytes", nil, err)
|
|
}
|
|
|
|
val := b64.StdEncoding.EncodeToString(value)
|
|
if result, ok := generated[val]; ok {
|
|
generated[val] = result + 1
|
|
} else {
|
|
generated[val] = 1
|
|
}
|
|
}
|
|
|
|
for key, value := range generated {
|
|
if value > 1 {
|
|
t.Errorf(testhelper.TestErrorTemplate, fmt.Sprintf("%v occurance", key), 1, value)
|
|
}
|
|
decoded, err := b64.StdEncoding.DecodeString(key)
|
|
if err != nil {
|
|
t.Errorf(testhelper.TestErrorTemplate, "Decode string error", nil, err)
|
|
}
|
|
if len(decoded) != keysize {
|
|
t.Errorf(testhelper.TestErrorTemplate, "Decoded string length", keysize, len(decoded))
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkRandomString(b *testing.B) {
|
|
instance := randomvalues.NewGenerator("")
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
_, err := instance.GetString(32)
|
|
if err != nil {
|
|
b.Error(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkRandomUInt64(b *testing.B) {
|
|
instance := randomvalues.NewGenerator("")
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
_, err := instance.GetUInt64()
|
|
if err != nil {
|
|
b.Error(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkRandomHex(b *testing.B) {
|
|
instance := randomvalues.NewGenerator("")
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
_, err := instance.GetHex()
|
|
if err != nil {
|
|
b.Error(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func BenchmarkUniformDistHex(b *testing.B) {
|
|
instance := randomvalues.NewGenerator("")
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
_, err := instance.GetUniformDistHex()
|
|
if err != nil {
|
|
b.Error(err)
|
|
}
|
|
}
|
|
}
|