github.com/qiniu/x@v1.11.9/ctype/ctype_test.go (about) 1 package ctype 2 3 import ( 4 "testing" 5 ) 6 7 type testCase struct { 8 c rune 9 mask uint32 10 is bool 11 } 12 13 type stringTestCase struct { 14 str string 15 maskFirst uint32 16 maskNext uint32 17 is bool 18 } 19 20 var isCases = []testCase{ 21 {'-', DOMAIN_CHAR, true}, 22 {'.', DOMAIN_CHAR, true}, 23 {'_', DOMAIN_CHAR, false}, 24 {'+', DOMAIN_CHAR, true}, 25 {'a', DOMAIN_CHAR, true}, 26 {'A', DOMAIN_CHAR, true}, 27 {'0', DOMAIN_CHAR, true}, 28 {':', DOMAIN_CHAR, false}, 29 {'1', ALPHA, false}, 30 {'a', ALPHA, true}, 31 {'A', ALPHA, true}, 32 } 33 34 var strCases = []stringTestCase{ 35 {"", CSYMBOL_FIRST_CHAR, CSYMBOL_NEXT_CHAR, false}, 36 {"123", CSYMBOL_FIRST_CHAR, CSYMBOL_NEXT_CHAR, false}, 37 {"_", CSYMBOL_FIRST_CHAR, CSYMBOL_NEXT_CHAR, true}, 38 {"_123", CSYMBOL_FIRST_CHAR, CSYMBOL_NEXT_CHAR, true}, 39 {"x_123", CSYMBOL_FIRST_CHAR, CSYMBOL_NEXT_CHAR, true}, 40 {"x_", CSYMBOL_FIRST_CHAR, CSYMBOL_NEXT_CHAR, true}, 41 {"_x", CSYMBOL_FIRST_CHAR, CSYMBOL_NEXT_CHAR, true}, 42 43 {"", CSYMBOL_FIRST_CHAR, CSYMBOL_FIRST_CHAR, false}, 44 {"x_123", CSYMBOL_FIRST_CHAR, CSYMBOL_FIRST_CHAR, false}, 45 {"x_", CSYMBOL_FIRST_CHAR, CSYMBOL_FIRST_CHAR, true}, 46 {"_x", CSYMBOL_FIRST_CHAR, CSYMBOL_FIRST_CHAR, true}, 47 {"_", CSYMBOL_FIRST_CHAR, CSYMBOL_FIRST_CHAR, true}, 48 } 49 50 func TestIs(t *testing.T) { 51 for _, a := range isCases { 52 f := Is(a.mask, a.c) 53 if f != a.is { 54 t.Fatal("case:", a, "result:", f) 55 } 56 } 57 } 58 59 func TestIsTypeEx(t *testing.T) { 60 for _, a := range strCases { 61 f := IsTypeEx(a.maskFirst, a.maskNext, a.str) 62 if f != a.is { 63 t.Fatal("case:", a, "result:", f) 64 } 65 if a.maskFirst == a.maskNext { 66 f = IsType(a.maskFirst, a.str) 67 if f != a.is { 68 t.Fatal("case:", a, "result:", f) 69 } 70 } 71 } 72 }