2015-05-23 00:55:54 +02:00
|
|
|
package uuid
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
const iterations = 1000
|
|
|
|
|
|
|
|
func TestUUID4Generation(t *testing.T) {
|
|
|
|
for i := 0; i < iterations; i++ {
|
|
|
|
u := Generate()
|
|
|
|
|
|
|
|
if u[6]&0xf0 != 0x40 {
|
|
|
|
t.Fatalf("version byte not correctly set: %v, %08b %08b", u, u[6], u[6]&0xf0)
|
|
|
|
}
|
|
|
|
|
|
|
|
if u[8]&0xc0 != 0x80 {
|
|
|
|
t.Fatalf("top order 8th byte not correctly set: %v, %b", u, u[8])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestParseAndEquality(t *testing.T) {
|
|
|
|
for i := 0; i < iterations; i++ {
|
|
|
|
u := Generate()
|
|
|
|
|
|
|
|
parsed, err := Parse(u.String())
|
|
|
|
if err != nil {
|
|
|
|
t.Fatalf("error parsing uuid %v: %v", u, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if parsed != u {
|
|
|
|
t.Fatalf("parsing round trip failed: %v != %v", parsed, u)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, c := range []string{
|
|
|
|
"bad",
|
|
|
|
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", // correct length, incorrect format
|
|
|
|
" 20cc7775-2671-43c7-8742-51d1cfa23258", // leading space
|
|
|
|
"20cc7775-2671-43c7-8742-51d1cfa23258 ", // trailing space
|
2015-05-26 20:34:37 +02:00
|
|
|
"00000000-0000-0000-0000-x00000000000", // out of range character
|
2015-05-23 00:55:54 +02:00
|
|
|
} {
|
|
|
|
if _, err := Parse(c); err == nil {
|
|
|
|
t.Fatalf("parsing %q should have failed", c)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|