github.com/JohanShen/go-utils@v1.1.4-0.20201117124024-901319a2b2a0/utils/str_test.go (about) 1 package utils 2 3 import ( 4 "strings" 5 "testing" 6 ) 7 8 var arys = []string{"a", "aa", "abca", "A", "aA", "aBca"} 9 10 type testdata struct { 11 str string 12 mcase bool 13 value int 14 } 15 16 func TestFixedLeft1(t *testing.T) { 17 18 type ttt struct { 19 str1 string 20 str2 string 21 } 22 b := byte('*') 23 l := 5 24 data := make([]ttt, 0, 10) 25 strs := []string{"", "a", "中文a", "テスト", "provë", "îmtîhan", "परीक्षा", "פּרובירן", "փորձարկում", "పరీక్ష", "ทดสอบ"} 26 for _, str := range strs { 27 //ol := len(str) 28 //bl := len(StringToBytes(str)) 29 rl := len([]rune(str)) 30 //t.Log(ol,bl, rl) 31 l1 := l - rl 32 33 str1 := str 34 if l1 > 0 { 35 str1 = str + strings.Repeat(string(b), l1) 36 } else { 37 str1 = string([]rune(str1)[0:l]) //str1[0:l] 38 } 39 data = append(data, ttt{str, str1}) 40 } 41 42 for i, d := range data { 43 val := FixedLeft(d.str1, b, l) 44 t.Log(i, d.str2, val, d.str2 == val) 45 } 46 47 } 48 49 func TestFixedLeft(t *testing.T) { 50 51 type ttt struct { 52 str1 string 53 str2 string 54 } 55 b := byte('*') 56 l := 5 57 data := make([]ttt, 0, 10) 58 strs := []string{"", "a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa", "aaaaaaa"} 59 for _, str := range strs { 60 l1 := l - len(str) 61 str1 := str 62 if l1 > 0 { 63 str1 = str + strings.Repeat(string(b), l1) 64 } else { 65 str1 = str1[0:l] 66 } 67 data = append(data, ttt{str, str1}) 68 } 69 70 for i, d := range data { 71 val := FixedRight(d.str1, b, l) 72 t.Log(i, d.str2, val, d.str2 == val) 73 } 74 75 } 76 77 func TestFixedRight(t *testing.T) { 78 79 type ttt struct { 80 str1 string 81 str2 string 82 } 83 b := byte('*') 84 l := 5 85 data := make([]ttt, 0, 10) 86 strs := []string{"", "a", "aa", "aaa", "aaaa", "aaaaa", "aaaaaa", "aaaaaaa"} 87 for _, str := range strs { 88 l1 := l - len(str) 89 str1 := str 90 if l1 > 0 { 91 str1 = strings.Repeat(string(b), l1) + str 92 } else { 93 l2 := len(str) - l 94 str1 = str1[l2:] 95 } 96 data = append(data, ttt{str, str1}) 97 } 98 99 for i, d := range data { 100 val := FixedLeft(d.str1, b, l) 101 t.Log(i, d.str2, val, d.str2 == val) 102 } 103 } 104 105 func TestIndexOf(t *testing.T) { 106 107 data := make([]*testdata, 0) 108 data = append(data, &testdata{"a", false, 0}) 109 data = append(data, &testdata{"aa", false, 1}) 110 data = append(data, &testdata{"AA", false, 1}) 111 data = append(data, &testdata{"aA", false, 1}) 112 data = append(data, &testdata{"A", true, 3}) 113 data = append(data, &testdata{"AA", true, -1}) 114 data = append(data, &testdata{"aA", true, 4}) 115 116 t.Log(arys) 117 118 for _, v := range data { 119 if a := IndexOf(arys, v.str, v.mcase); a != v.value { 120 t.Error("期待值不匹配", v.str, v.value, a) 121 } else { 122 t.Log(v.str, v.value, a) 123 } 124 } 125 t.Log("全部测试通过") 126 } 127 128 func TestIndexOfMatchCase(t *testing.T) { 129 130 data := make([]*testdata, 0) 131 data = append(data, &testdata{"a", true, 0}) 132 data = append(data, &testdata{"aa", true, 1}) 133 data = append(data, &testdata{"AA", true, -1}) 134 data = append(data, &testdata{"aA", true, 4}) 135 data = append(data, &testdata{"A", true, 3}) 136 data = append(data, &testdata{"abca", true, 2}) 137 data = append(data, &testdata{"aA", true, 4}) 138 139 t.Log(arys) 140 141 for _, v := range data { 142 if a := IndexOfMatchCase(arys, v.str); a != v.value { 143 t.Error("期待值不匹配", v.str, v.value, a) 144 } else { 145 t.Log(v.str, v.value, a) 146 } 147 } 148 t.Log("全部测试通过") 149 } 150 151 func TestIndexOfWithoutCase(t *testing.T) { 152 153 data := make([]*testdata, 0) 154 data = append(data, &testdata{"a", true, 0}) 155 data = append(data, &testdata{"aa", true, 1}) 156 data = append(data, &testdata{"AA", true, 1}) 157 data = append(data, &testdata{"aA", true, 1}) 158 data = append(data, &testdata{"A", true, 0}) 159 data = append(data, &testdata{"abca", true, 2}) 160 data = append(data, &testdata{"aA", true, 1}) 161 162 t.Log(arys) 163 164 for _, v := range data { 165 if a := IndexOfWithoutCase(arys, v.str); a != v.value { 166 t.Error("期待值不匹配", v.str, v.value, a) 167 } else { 168 t.Log(v.str, v.value, a) 169 } 170 } 171 t.Log("全部测试通过") 172 }