...
1 package strings
2
3 import (
4 "strings"
5 "testing"
6 )
7
8 func TestHasPrefixFold(t *testing.T) {
9 type args struct {
10 s string
11 prefix string
12 }
13 tests := map[string]struct {
14 args args
15 want bool
16 }{
17 "empty strings and prefix": {
18 args: args{
19 s: "",
20 prefix: "",
21 },
22 want: true,
23 },
24 "strings starts with prefix": {
25 args: args{
26 s: "some string",
27 prefix: "some",
28 },
29 want: true,
30 },
31 "prefix longer then string": {
32 args: args{
33 s: "some",
34 prefix: "some string",
35 },
36 },
37 "equal length string and prefix": {
38 args: args{
39 s: "short string",
40 prefix: "short string",
41 },
42 want: true,
43 },
44 "different cases": {
45 args: args{
46 s: "ShOrT StRING",
47 prefix: "short",
48 },
49 want: true,
50 },
51 "empty prefix not empty string": {
52 args: args{
53 s: "ShOrT StRING",
54 prefix: "",
55 },
56 want: true,
57 },
58 "mixed-case prefixes": {
59 args: args{
60 s: "SoMe String",
61 prefix: "sOme",
62 },
63 want: true,
64 },
65 }
66 for name, tt := range tests {
67 t.Run(name, func(t *testing.T) {
68 if got := HasPrefixFold(tt.args.s, tt.args.prefix); got != tt.want {
69 t.Errorf("HasPrefixFold() = %v, want %v", got, tt.want)
70 }
71 })
72 }
73 }
74
75 func BenchmarkHasPrefixFold(b *testing.B) {
76 HasPrefixFold("SoME string", "sOmE")
77 }
78
79 func BenchmarkHasPrefix(b *testing.B) {
80 strings.HasPrefix(strings.ToLower("SoME string"), strings.ToLower("sOmE"))
81 }
82
View as plain text