49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Go
		
	
	
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)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |