@@ -161,36 +161,95 @@ func TestSplitJoinTokens(t *testing.T) {
161
161
}
162
162
}
163
163
164
- func TestAppendPrepend (t * testing.T ) {
164
+ func TestUniqueTokens (t * testing.T ) {
165
165
tests := []struct {
166
- Sep , Value , Existing , Result string
166
+ Tokens , Want [] string
167
167
}{
168
- {":" , "Z" , "" , "Z" },
169
- {":" , "" , "Z" , "Z" },
170
- {":" , "" , "" , "" },
171
- {":" , "X" , ":A:B" , "X:A:B" },
172
- {":" , "Y" , "A:B" , "Y:A:B" },
173
- {":" , "Z" , "A:::B" , "Z:A:B" },
174
- {":" , "Z" , "A:::B:" , "Z:A:B" },
175
- }
176
- for i , test := range tests {
177
- if got , want := PrependUsingSeparator (test .Value , test .Existing , test .Sep ), test .Result ; got != want {
178
- t .Errorf ("SplitTokens(%d) got %v, want %v" , i , got , want )
168
+ {nil , nil },
169
+ {[]string {"" }, nil },
170
+ {[]string {"A" }, []string {"A" }},
171
+ {[]string {"A" , "A" }, []string {"A" }},
172
+ {[]string {"A" , "B" }, []string {"A" , "B" }},
173
+ {[]string {"A" , "B" , "A" , "B" }, []string {"A" , "B" }},
174
+ }
175
+ for _ , test := range tests {
176
+ if got , want := UniqueTokens (test .Tokens ), test .Want ; ! reflect .DeepEqual (got , want ) {
177
+ t .Errorf ("UniqueTokens(%q) got %q, want %q" , test .Tokens , got , want )
179
178
}
180
179
}
181
- tests = []struct {
182
- Sep , Value , Existing , Result string
180
+ }
181
+
182
+ func TestFilterToken (t * testing.T ) {
183
+ tests := []struct {
184
+ Tokens []string
185
+ Target string
186
+ Want []string
183
187
}{
184
- {":" , "Z" , "" , "Z" },
188
+ {nil , "" , nil },
189
+ {nil , "A" , nil },
190
+ {[]string {"" }, "" , nil },
191
+ {[]string {"" }, "A" , nil },
192
+ {[]string {"A" }, "" , []string {"A" }},
193
+ {[]string {"A" }, "A" , nil },
194
+ {[]string {"A" }, "B" , []string {"A" }},
195
+ {[]string {"A" , "A" }, "" , []string {"A" , "A" }},
196
+ {[]string {"A" , "A" }, "A" , nil },
197
+ {[]string {"A" , "A" }, "B" , []string {"A" , "A" }},
198
+ {[]string {"A" , "B" }, "" , []string {"A" , "B" }},
199
+ {[]string {"A" , "B" }, "A" , []string {"B" }},
200
+ {[]string {"A" , "B" }, "B" , []string {"A" }},
201
+ {[]string {"A" , "B" , "A" , "B" }, "" , []string {"A" , "B" , "A" , "B" }},
202
+ {[]string {"A" , "B" , "A" , "B" }, "A" , []string {"B" , "B" }},
203
+ {[]string {"A" , "B" , "A" , "B" }, "B" , []string {"A" , "A" }},
204
+ }
205
+ for _ , test := range tests {
206
+ if got , want := FilterToken (test .Tokens , test .Target ), test .Want ; ! reflect .DeepEqual (got , want ) {
207
+ t .Errorf ("FilterToken(%q, %q) got %q, want %q" , test .Tokens , test .Target , got , want )
208
+ }
209
+ }
210
+ }
211
+
212
+ func TestPrependUniqueToken (t * testing.T ) {
213
+ tests := []struct {
214
+ Sep , Value , Token , Want string
215
+ }{
216
+ {":" , "" , "" , "" },
185
217
{":" , "" , "Z" , "Z" },
218
+ {":" , "Z" , "" , "Z" },
219
+ {":" , "Z" , "Z" , "Z" },
220
+ {":" , ":Z:Z:" , "Z" , "Z" },
221
+ {":" , ":A:B" , "Z" , "Z:A:B" },
222
+ {":" , "A:B" , "Z" , "Z:A:B" },
223
+ {":" , "A:::B" , "Z" , "Z:A:B" },
224
+ {":" , "A:::B:" , "Z" , "Z:A:B" },
225
+ {":" , "Z:A:Z:B:Z" , "Z" , "Z:A:B" },
226
+ {":" , "Z:A:Z:B:Z:A:Z:B:Z" , "Z" , "Z:A:B" },
227
+ }
228
+ for _ , test := range tests {
229
+ if got , want := PrependUniqueToken (test .Value , test .Sep , test .Token ), test .Want ; got != want {
230
+ t .Errorf ("PrependUniqueToken(%q, %q, %q) got %v, want %v" , test .Value , test .Sep , test .Token , got , want )
231
+ }
232
+ }
233
+ }
234
+
235
+ func TestAppendUniqueToken (t * testing.T ) {
236
+ tests := []struct {
237
+ Sep , Value , Token , Want string
238
+ }{
186
239
{":" , "" , "" , "" },
187
- {":" , "X" , ":A:B:" , "A:B:X" },
188
- {":" , "Y" , "A:B" , "A:B:Y" },
189
- {":" , "Z" , "A:::B" , "A:B:Z" },
240
+ {":" , "" , "Z" , "Z" },
241
+ {":" , "Z" , "" , "Z" },
242
+ {":" , "Z" , "Z" , "Z" },
243
+ {":" , ":Z:Z:" , "Z" , "Z" },
244
+ {":" , ":A:B:" , "Z" , "A:B:Z" },
245
+ {":" , "A:B" , "Z" , "A:B:Z" },
246
+ {":" , "A:::B" , "Z" , "A:B:Z" },
247
+ {":" , "Z:A:Z:B:Z" , "Z" , "A:B:Z" },
248
+ {":" , "Z:A:Z:B:Z:A:Z:B:Z" , "Z" , "A:B:Z" },
190
249
}
191
- for i , test := range tests {
192
- if got , want := AppendUsingSeparator (test .Value , test .Existing , test .Sep ), test .Result ; got != want {
193
- t .Errorf ("SplitTokens(%d ) got %v, want %v" , i , got , want )
250
+ for _ , test := range tests {
251
+ if got , want := AppendUniqueToken (test .Value , test .Sep , test .Token ), test .Want ; got != want {
252
+ t .Errorf ("AppendUniqueToken(%q, %q, %q ) got %v, want %v" , test . Value , test . Sep , test . Token , got , want )
194
253
}
195
254
}
196
255
}
0 commit comments