@@ -204,28 +204,58 @@ func Test_StringToLower1stLetter(t *testing.T) {
204204 assert .Equal (t , "ối" , StringToLower1stLetter ("Ối" ))
205205}
206206
207- func Test_StringSplitEx (t * testing.T ) {
208- assert .Equal (t , []string {"" }, StringSplitEx ("" , " " , "\" " ))
209- assert .Equal (t , []string {"" , "" }, StringSplitEx (" " , " " , "\" " ))
210- assert .Equal (t , []string {"" , "" , "" }, StringSplitEx (",," , "," , "`" ))
207+ func Test_StringSplit (t * testing.T ) {
208+ // NOTE: most cases are tested by Test_StringSplitN
209+ assert .Equal (t , []string {"" }, StringSplit ("" , " " , "\" " ))
210+ assert .Equal (t , []string {"" , "" }, StringSplit (" " , " " , "\" " ))
211+ assert .Equal (t , []string {"" , "" , "" }, StringSplit (",," , "," , "`" ))
211212
212- assert .Equal (t , []string {"abc" }, StringSplitEx ("abc" , " " , "\" " ))
213+ assert .Equal (t , []string {"abc" }, StringSplit ("abc" , " " , "\" " ))
213214 assert .Equal (t , []string {"" , "ab" , "" , "cd" , "12" , "" , "" , "34" , "" },
214- StringSplitEx (" ab cd 12 34 " , " " , "\" " ))
215+ StringSplit (" ab cd 12 34 " , " " , "\" " ))
215216 assert .Equal (t , []string {"ab" , "xy" , "\" 12 34 \" 56" },
216- StringSplitEx ("ab xy \" 12 34 \" 56" , " " , "\" " ))
217+ StringSplit ("ab xy \" 12 34 \" 56" , " " , "\" " ))
217218 assert .Equal (t , []string {"ab" , "xy" , "''12" , "34" , "'56" , "" },
218- StringSplitEx ("ab xy ''12 34 '56 " , " " , "'" ))
219+ StringSplit ("ab xy ''12 34 '56 " , " " , "'" ))
220+ }
221+
222+ func Test_StringSplitN (t * testing.T ) {
223+ assert .Equal (t , []string {"" }, StringSplitN ("" , " " , "\" " , - 1 ))
224+ assert .Equal (t , []string {"" , "" }, StringSplitN (" " , " " , "\" " , - 1 ))
225+ assert .Equal (t , []string {"" , "" , "" }, StringSplitN (",," , "," , "`" , - 1 ))
226+
227+ assert .Equal (t , []string {"abc" }, StringSplitN ("abc" , " " , "\" " , - 1 ))
228+ assert .Equal (t , []string {"" , "ab" , "" , "cd" , "12" , "" , "" , "34" , "" },
229+ StringSplitN (" ab cd 12 34 " , " " , "\" " , - 1 ))
230+ assert .Equal (t , []string {"ab" , "xy" , "\" 12 34 \" 56" },
231+ StringSplitN ("ab xy \" 12 34 \" 56" , " " , "\" " , - 1 ))
232+ assert .Equal (t , []string {"ab" , "xy" , "''12" , "34" , "'56" , "" },
233+ StringSplitN ("ab xy ''12 34 '56 " , " " , "'" , - 1 ))
219234
220235 assert .Equal (t , []string {"" , "ab" , "" , "cd" , "[12 34][ 56 ]" , "" },
221- StringSplitEx (" ab cd [12 34][ 56 ] " , " " , "[ ]" ))
236+ StringSplitN (" ab cd [12 34][ 56 ] " , " " , "[ ]" , - 1 ))
222237 assert .Equal (t , []string {"" , "ab" , "" , "cd" , "[12 34]" , "[ 56 ]" , "" },
223- StringSplitEx (" ab cd [12 34] [ 56 ] " , " " , "[ ]" ))
238+ StringSplitN (" ab cd [12 34] [ 56 ] " , " " , "[ ]" , - 1 ))
224239 assert .Equal (t , []string {"" , "ab" , "" , "cd" , "[[12 34]" , "56" , "" },
225- StringSplitEx (" ab cd [[12 34] 56 " , " " , "[ ]" ))
240+ StringSplitN (" ab cd [[12 34] 56 " , " " , "[ ]" , - 1 ))
226241 assert .Equal (t , []string {"" , "ab" , "" , "cd" , "[[[12 34]" , "56" , "" },
227- StringSplitEx (" ab cd [[[12 34] 56 " , " " , "[ ]" ))
242+ StringSplitN (" ab cd [[[12 34] 56 " , " " , "[ ]" , - 1 ))
228243
229244 assert .Equal (t , []string {"" , "ab" , "" , "cd" , "{{12 34}}" , "{56" , "78}" , "" },
230- StringSplitEx (" ab cd {{12 34}} {56 78} " , " " , "{{ }}" ))
245+ StringSplitN (" ab cd {{12 34}} {56 78} " , " " , "{{ }}" , - 1 ))
246+
247+ // When n is not -1
248+ assert .Equal (t , []string (nil ), StringSplitN ("" , " " , "\" " , 0 ))
249+ assert .Equal (t , []string (nil ), StringSplitN ("abc" , " " , "\" " , 0 ))
250+ assert .Equal (t , []string {"" }, StringSplitN ("" , " " , "\" " , 1 ))
251+ assert .Equal (t , []string {"abc" }, StringSplitN ("abc" , " " , "\" " , 1 ))
252+
253+ assert .Equal (t , []string {"" , "ab cd [12 34][ 56 ] " },
254+ StringSplitN (" ab cd [12 34][ 56 ] " , " " , "[ ]" , 2 ))
255+ assert .Equal (t , []string {"ab" , " cd [12 34][ 56 ] " },
256+ StringSplitN ("ab cd [12 34][ 56 ] " , " " , "[ ]" , 2 ))
257+ assert .Equal (t , []string {"ab" , "" , "cd [12 34][ 56 ] " },
258+ StringSplitN ("ab cd [12 34][ 56 ] " , " " , "[ ]" , 3 ))
259+ assert .Equal (t , []string {"ab" , "cd" , "[12 34][ 56 ]" , "" },
260+ StringSplitN ("ab cd [12 34][ 56 ] " , " " , "[ ]" , 4 ))
231261}
0 commit comments