blob: db5840c633d4ea0676073436ba60c3bd6737d6f5 [file] [log] [blame]
Colin Cross3f40fa42015-01-30 17:27:36 -08001package parser
2
3import (
4 "strings"
5 "testing"
6)
7
8var splitNTestCases = []struct {
9 in *MakeString
10 expected []*MakeString
11 sep string
12 n int
13}{
14 {
15 in: &MakeString{
16 strings: []string{
17 "a b c",
18 "d e f",
19 " h i j",
20 },
21 variables: []Variable{
22 variable{name: SimpleMakeString("var1")},
23 variable{name: SimpleMakeString("var2")},
24 },
25 },
26 sep: " ",
27 n: -1,
28 expected: []*MakeString{
29 SimpleMakeString("a"),
30 SimpleMakeString("b"),
31 &MakeString{
32 strings: []string{"c", "d"},
33 variables: []Variable{
34 variable{name: SimpleMakeString("var1")},
35 },
36 },
37 SimpleMakeString("e"),
38 &MakeString{
39 strings: []string{"f", ""},
40 variables: []Variable{
41 variable{name: SimpleMakeString("var2")},
42 },
43 },
44 SimpleMakeString("h"),
45 SimpleMakeString("i"),
46 SimpleMakeString("j"),
47 },
48 },
49 {
50 in: &MakeString{
51 strings: []string{
52 "a b c",
53 "d e f",
54 " h i j",
55 },
56 variables: []Variable{
57 variable{name: SimpleMakeString("var1")},
58 variable{name: SimpleMakeString("var2")},
59 },
60 },
61 sep: " ",
62 n: 3,
63 expected: []*MakeString{
64 SimpleMakeString("a"),
65 SimpleMakeString("b"),
66 &MakeString{
67 strings: []string{"c", "d e f", " h i j"},
68 variables: []Variable{
69 variable{name: SimpleMakeString("var1")},
70 variable{name: SimpleMakeString("var2")},
71 },
72 },
73 },
74 },
75}
76
77func TestMakeStringSplitN(t *testing.T) {
78 for _, test := range splitNTestCases {
79 got := test.in.SplitN(test.sep, test.n)
80 gotString := dumpArray(got)
81 expectedString := dumpArray(test.expected)
82 if gotString != expectedString {
83 t.Errorf("expected:\n%s\ngot:\n%s", expectedString, gotString)
84 }
85 }
86}
87
88func dumpArray(a []*MakeString) string {
89 ret := make([]string, len(a))
90
91 for i, s := range a {
92 ret[i] = s.Dump()
93 }
94
95 return strings.Join(ret, "|||")
96}