58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
|
package gopredictivenamegenerator
|
||
|
|
||
|
import (
|
||
|
"hash/crc32"
|
||
|
"hash/crc64"
|
||
|
"math/rand"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
// this string was found to return "boring-wozniak" when run with the
|
||
|
// predictive option. (This will change if the lists are altered.)
|
||
|
const seedString string = "1717521489308073576"
|
||
|
|
||
|
func TestNew(t *testing.T) {
|
||
|
n := New()
|
||
|
assert.IsType(t, NameGenerator{}, n)
|
||
|
}
|
||
|
|
||
|
func TestGetRandomName(t *testing.T) {
|
||
|
var n NameGenerator
|
||
|
|
||
|
testingSeed := crc64.Checksum([]byte(seedString), crc64.MakeTable(crc32.IEEE))
|
||
|
n.rand = rand.New(rand.NewSource(int64(testingSeed)))
|
||
|
|
||
|
name := n.GetRandom()
|
||
|
assert.Equal(t, name, "elegant-solomon")
|
||
|
}
|
||
|
|
||
|
func TestGetRandomNameExclude(t *testing.T) {
|
||
|
n := New()
|
||
|
// this value will select "boring-wozniak".
|
||
|
n.rand = rand.New(rand.NewSource(1717521489308012347))
|
||
|
|
||
|
name := n.GetRandom()
|
||
|
assert.Equal(t, name, "infallible-varahamihira")
|
||
|
}
|
||
|
|
||
|
func TestGetPredictiveName(t *testing.T) {
|
||
|
var n NameGenerator
|
||
|
|
||
|
name := n.GetPredictive(seedString)
|
||
|
|
||
|
assert.EqualValues(t, name, "elegant-solomon")
|
||
|
}
|
||
|
|
||
|
func TestExclusions(t *testing.T) {
|
||
|
answer := exclusions("boring-wozniak")
|
||
|
assert.True(t, answer)
|
||
|
|
||
|
answer = exclusions("sane-beeblebrox")
|
||
|
assert.True(t, answer)
|
||
|
|
||
|
answer = exclusions("sane-jannings")
|
||
|
assert.False(t, answer)
|
||
|
}
|