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 "00000000-0000-0000-0000-x00000000000", // out of range character } { if _, err := Parse(c); err == nil { t.Fatalf("parsing %q should have failed", c) } } }