| 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) |
| } |
| } |
| } |