github.com/giantswarm/apiextensions/v6@v6.6.0/pkg/id/id_test.go (about) 1 package id 2 3 import ( 4 "regexp" 5 "strconv" 6 "testing" 7 "unicode" 8 ) 9 10 func TestGenerate(t *testing.T) { 11 attempts := 1000 12 13 validCharsRegexp := regexp.MustCompile("^[02-9a-km-z]") 14 lettersOnlyRegexp := regexp.MustCompile("^[a-z]+$") 15 digitsOnlyRegexp := regexp.MustCompile("^[0-9]+$") 16 17 for i := 0; i < attempts; i++ { 18 t.Run(strconv.Itoa(i), func(t *testing.T) { 19 id := Generate() 20 idChars := []rune(id) 21 22 if !validCharsRegexp.MatchString(id) { 23 t.Fatalf("generated id contains invalid characters: %q", id) 24 } 25 26 if !unicode.IsLetter(idChars[0]) { 27 t.Fatalf("generated id does not start with a letter: %q", id) 28 } 29 30 if lettersOnlyRegexp.MatchString(id) { 31 t.Fatalf("generated id only contains letters: %q", id) 32 } 33 34 if digitsOnlyRegexp.MatchString(id) { 35 t.Fatalf("generated id only contains digits: %q", id) 36 } 37 38 if len(idChars) > IDLength { 39 t.Fatalf("generated id is too long: %d > %d", len(idChars), IDLength) 40 } 41 }) 42 } 43 }