@@ -186,3 +186,37 @@ func Test_OptionalBool(t *testing.T) {
186186 assert .Equal (t , OptionalBoolTrue , OptionalBoolParse ("t" ))
187187 assert .Equal (t , OptionalBoolTrue , OptionalBoolParse ("True" ))
188188}
189+
190+ // Test case for any function which accepts and returns a single string.
191+ type StringTest struct {
192+ in , out string
193+ }
194+
195+ var upperTests = []StringTest {
196+ {"" , "" },
197+ {"ONLYUPPER" , "ONLYUPPER" },
198+ {"abc" , "ABC" },
199+ {"AbC123" , "ABC123" },
200+ {"azAZ09_" , "AZAZ09_" },
201+ {"longStrinGwitHmixofsmaLLandcAps" , "LONGSTRINGWITHMIXOFSMALLANDCAPS" },
202+ {"long\u0250 string\u0250 with\u0250 nonascii\u2C6F chars" , "LONG\u0250 STRING\u0250 WITH\u0250 NONASCII\u2C6F CHARS" },
203+ {"\u0250 \u0250 \u0250 \u0250 \u0250 " , "\u0250 \u0250 \u0250 \u0250 \u0250 " },
204+ {"a\u0080 \U0010FFFF " , "A\u0080 \U0010FFFF " },
205+ {"lél" , "LéL" },
206+ }
207+
208+ func TestToUpperASCII (t * testing.T ) {
209+ for _ , tc := range upperTests {
210+ assert .Equal (t , ToUpperASCII (tc .in ), tc .out )
211+ }
212+ }
213+
214+ func BenchmarkToUpper (b * testing.B ) {
215+ for _ , tc := range upperTests {
216+ b .Run (tc .in , func (b * testing.B ) {
217+ for i := 0 ; i < b .N ; i ++ {
218+ ToUpperASCII (tc .in )
219+ }
220+ })
221+ }
222+ }
0 commit comments