-
Notifications
You must be signed in to change notification settings - Fork 0
/
string_test.go
123 lines (116 loc) · 2.46 KB
/
string_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package g
import (
"testing"
)
// TestWeed tests the Weed function.
func TestWeed(t *testing.T) {
tests := []struct {
name string
s string
patterns []string
want string
}{
{
name: "Default Weed",
s: "Hello\t World",
patterns: []string{},
want: "Hello World",
},
{
name: "NonAlphabetics Weed",
s: "+380 (96) 123 4567",
patterns: []string{Whitespaces, Symbols},
want: "380961234567",
},
{
name: "Whitespaces Weed",
s: " i @goloop.one\n",
patterns: []string{Whitespaces, Breakers},
want: "i@goloop.one",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := Weed(tt.s, tt.patterns...); got != tt.want {
t.Errorf("Weed() = %v, want %v", got, tt.want)
}
})
}
}
// TestTrim tests the Trim function.
func TestTrim(t *testing.T) {
tests := []struct {
name string
s string
patterns []string
want string
}{
{
name: "Default Trim",
s: " Hello\t World\r\n",
patterns: []string{},
want: "Hello\t World",
},
{
name: "Simple Trim",
s: " Go Loop\n ",
patterns: []string{},
want: "Go Loop",
},
{
name: "Whitespace Trim",
s: " \ti@goloop.one\n ",
patterns: []string{Whitespaces, Breakers},
want: "i@goloop.one",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := Trim(tt.s, tt.patterns...); got != tt.want {
t.Errorf("Trim() = %v, want %v", got, tt.want)
}
})
}
}
// TestPreserve tests the Preserve function.
func TestPreserve(t *testing.T) {
testCases := []struct {
name string
input string
patterns []string
expected string
}{
{
name: "Default behavior",
input: "Hello, World!",
expected: "Hello World",
},
{
name: "Preserve numbers",
input: "+380 (96) 123 4567",
patterns: []string{Numbers},
expected: "380961234567",
},
{
name: "Preserve letters",
input: "i@goloop.one",
patterns: []string{Letters},
expected: "igoloopone",
},
{
name: "Preserve symbols",
input: "Hello, World!",
patterns: []string{Symbols},
expected: ",!",
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
result := Preserve(tc.input, tc.patterns...)
if result != tc.expected {
t.Errorf("Preserve(%q, %v) = %q; want %q",
tc.input, tc.patterns, result, tc.expected)
}
})
}
}