uniuri/uniuri_test.go

59 lines
1.2 KiB
Go
Raw Normal View History

2011-04-05 17:57:25 +02:00
package uniuri
import "testing"
func validateChars(t *testing.T, u string, chars []byte) {
2011-04-05 17:57:25 +02:00
for _, c := range u {
var present bool
for _, a := range StdChars {
2012-01-16 14:29:26 +01:00
if rune(a) == c {
2011-04-05 17:57:25 +02:00
present = true
}
}
if !present {
t.Fatalf("chars not allowed in %q", u)
}
}
}
func TestNew(t *testing.T) {
u := New()
// Check length
if len(u) != StdLen {
t.Fatalf("wrong length: expected %d, got %d", StdLen, len(u))
}
// Check that only allowed characters are present
validateChars(t, u, StdChars)
2011-04-05 17:57:25 +02:00
// Generate 1000 uniuris and check that they are unique
uris := make([]string, 1000)
for i, _ := range uris {
uris[i] = New()
}
for i, u := range uris {
for j, u2 := range uris {
if i != j && u == u2 {
t.Fatalf("not unique: %d:%q and %d:%q", i, j, u, u2)
}
}
}
}
func TestNewLenChars(t *testing.T) {
length := 10
chars := []byte("01234567")
u := NewLenChars(length, chars)
// Check length
if len(u) != length {
t.Fatalf("wrong length: expected %d, got %d", StdLen, len(u))
}
// Check that only allowed characters are present
validateChars(t, u, chars)
// Check that two generated strings are different
u2 := NewLenChars(length, chars)
if u == u2 {
t.Fatalf("not unique: %q and %q", u, u2)
}
}