]> git.ipfire.org Git - thirdparty/git.git/blob - t/t0063-string-list.sh
The third batch
[thirdparty/git.git] / t / t0063-string-list.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2012 Michael Haggerty
4 #
5
6 test_description='Test string list functionality'
7
8 TEST_PASSES_SANITIZE_LEAK=true
9 . ./test-lib.sh
10
11 test_split () {
12 cat >expected &&
13 test_expect_success "split $1 at $2, max $3" "
14 test-tool string-list split '$1' '$2' '$3' >actual &&
15 test_cmp expected actual &&
16 test-tool string-list split_in_place '$1' '$2' '$3' >actual &&
17 test_cmp expected actual
18 "
19 }
20
21 test_split_in_place() {
22 cat >expected &&
23 test_expect_success "split (in place) $1 at $2, max $3" "
24 test-tool string-list split_in_place '$1' '$2' '$3' >actual &&
25 test_cmp expected actual
26 "
27 }
28
29 test_split "foo:bar:baz" ":" "-1" <<EOF
30 3
31 [0]: "foo"
32 [1]: "bar"
33 [2]: "baz"
34 EOF
35
36 test_split "foo:bar:baz" ":" "0" <<EOF
37 1
38 [0]: "foo:bar:baz"
39 EOF
40
41 test_split "foo:bar:baz" ":" "1" <<EOF
42 2
43 [0]: "foo"
44 [1]: "bar:baz"
45 EOF
46
47 test_split "foo:bar:baz" ":" "2" <<EOF
48 3
49 [0]: "foo"
50 [1]: "bar"
51 [2]: "baz"
52 EOF
53
54 test_split "foo:bar:" ":" "-1" <<EOF
55 3
56 [0]: "foo"
57 [1]: "bar"
58 [2]: ""
59 EOF
60
61 test_split "" ":" "-1" <<EOF
62 1
63 [0]: ""
64 EOF
65
66 test_split ":" ":" "-1" <<EOF
67 2
68 [0]: ""
69 [1]: ""
70 EOF
71
72 test_split_in_place "foo:;:bar:;:baz:;:" ":;" "-1" <<EOF
73 10
74 [0]: "foo"
75 [1]: ""
76 [2]: ""
77 [3]: "bar"
78 [4]: ""
79 [5]: ""
80 [6]: "baz"
81 [7]: ""
82 [8]: ""
83 [9]: ""
84 EOF
85
86 test_split_in_place "foo:;:bar:;:baz" ":;" "0" <<EOF
87 1
88 [0]: "foo:;:bar:;:baz"
89 EOF
90
91 test_split_in_place "foo:;:bar:;:baz" ":;" "1" <<EOF
92 2
93 [0]: "foo"
94 [1]: ";:bar:;:baz"
95 EOF
96
97 test_split_in_place "foo:;:bar:;:baz" ":;" "2" <<EOF
98 3
99 [0]: "foo"
100 [1]: ""
101 [2]: ":bar:;:baz"
102 EOF
103
104 test_split_in_place "foo:;:bar:;:" ":;" "-1" <<EOF
105 7
106 [0]: "foo"
107 [1]: ""
108 [2]: ""
109 [3]: "bar"
110 [4]: ""
111 [5]: ""
112 [6]: ""
113 EOF
114
115 test_expect_success "test filter_string_list" '
116 test "x-" = "x$(test-tool string-list filter - y)" &&
117 test "x-" = "x$(test-tool string-list filter no y)" &&
118 test yes = "$(test-tool string-list filter yes y)" &&
119 test yes = "$(test-tool string-list filter no:yes y)" &&
120 test yes = "$(test-tool string-list filter yes:no y)" &&
121 test y1:y2 = "$(test-tool string-list filter y1:y2 y)" &&
122 test y2:y1 = "$(test-tool string-list filter y2:y1 y)" &&
123 test "x-" = "x$(test-tool string-list filter x1:x2 y)"
124 '
125
126 test_expect_success "test remove_duplicates" '
127 test "x-" = "x$(test-tool string-list remove_duplicates -)" &&
128 test "x" = "x$(test-tool string-list remove_duplicates "")" &&
129 test a = "$(test-tool string-list remove_duplicates a)" &&
130 test a = "$(test-tool string-list remove_duplicates a:a)" &&
131 test a = "$(test-tool string-list remove_duplicates a:a:a:a:a)" &&
132 test a:b = "$(test-tool string-list remove_duplicates a:b)" &&
133 test a:b = "$(test-tool string-list remove_duplicates a:a:b)" &&
134 test a:b = "$(test-tool string-list remove_duplicates a:b:b)" &&
135 test a:b:c = "$(test-tool string-list remove_duplicates a:b:c)" &&
136 test a:b:c = "$(test-tool string-list remove_duplicates a:a:b:c)" &&
137 test a:b:c = "$(test-tool string-list remove_duplicates a:b:b:c)" &&
138 test a:b:c = "$(test-tool string-list remove_duplicates a:b:c:c)" &&
139 test a:b:c = "$(test-tool string-list remove_duplicates a:a:b:b:c:c)" &&
140 test a:b:c = "$(test-tool string-list remove_duplicates a:a:a:b:b:b:c:c:c)"
141 '
142
143 test_done