1 /*
2 * Copyright 2011-2016 Blender Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #include "testing/testing.h"
18
19 #include "util/util_string.h"
20
21 CCL_NAMESPACE_BEGIN
22
23 /* ******** Tests for string_printf() ******** */
24
TEST(util_string_printf,no_format)25 TEST(util_string_printf, no_format)
26 {
27 string str = string_printf("foo bar");
28 EXPECT_EQ("foo bar", str);
29 }
30
TEST(util_string_printf,int_number)31 TEST(util_string_printf, int_number)
32 {
33 string str = string_printf("foo %d bar", 314);
34 EXPECT_EQ("foo 314 bar", str);
35 }
36
TEST(util_string_printf,float_number_default_precision)37 TEST(util_string_printf, float_number_default_precision)
38 {
39 string str = string_printf("foo %f bar", 3.1415);
40 EXPECT_EQ("foo 3.141500 bar", str);
41 }
42
TEST(util_string_printf,float_number_custom_precision)43 TEST(util_string_printf, float_number_custom_precision)
44 {
45 string str = string_printf("foo %.1f bar", 3.1415);
46 EXPECT_EQ("foo 3.1 bar", str);
47 }
48
49 /* ******** Tests for string_printf() ******** */
50
TEST(util_string_iequals,empty_a)51 TEST(util_string_iequals, empty_a)
52 {
53 bool equals = string_iequals("", "foo");
54 EXPECT_FALSE(equals);
55 }
56
TEST(util_string_iequals,empty_b)57 TEST(util_string_iequals, empty_b)
58 {
59 bool equals = string_iequals("foo", "");
60 EXPECT_FALSE(equals);
61 }
62
TEST(util_string_iequals,same_register)63 TEST(util_string_iequals, same_register)
64 {
65 bool equals = string_iequals("foo", "foo");
66 EXPECT_TRUE(equals);
67 }
68
TEST(util_string_iequals,different_register)69 TEST(util_string_iequals, different_register)
70 {
71 bool equals = string_iequals("XFoo", "XfoO");
72 EXPECT_TRUE(equals);
73 }
74
75 /* ******** Tests for string_split() ******** */
76
TEST(util_string_split,empty)77 TEST(util_string_split, empty)
78 {
79 vector<string> tokens;
80 string_split(tokens, "");
81 EXPECT_EQ(tokens.size(), 0);
82 }
83
TEST(util_string_split,only_spaces)84 TEST(util_string_split, only_spaces)
85 {
86 vector<string> tokens;
87 string_split(tokens, " \t\t \t");
88 EXPECT_EQ(tokens.size(), 0);
89 }
90
TEST(util_string_split,single)91 TEST(util_string_split, single)
92 {
93 vector<string> tokens;
94 string_split(tokens, "foo");
95 EXPECT_EQ(tokens.size(), 1);
96 EXPECT_EQ(tokens[0], "foo");
97 }
98
TEST(util_string_split,simple)99 TEST(util_string_split, simple)
100 {
101 vector<string> tokens;
102 string_split(tokens, "foo a bar b");
103 EXPECT_EQ(tokens.size(), 4);
104 EXPECT_EQ(tokens[0], "foo");
105 EXPECT_EQ(tokens[1], "a");
106 EXPECT_EQ(tokens[2], "bar");
107 EXPECT_EQ(tokens[3], "b");
108 }
109
TEST(util_string_split,multiple_spaces)110 TEST(util_string_split, multiple_spaces)
111 {
112 vector<string> tokens;
113 string_split(tokens, " \t foo \ta bar b\t ");
114 EXPECT_EQ(tokens.size(), 4);
115 EXPECT_EQ(tokens[0], "foo");
116 EXPECT_EQ(tokens[1], "a");
117 EXPECT_EQ(tokens[2], "bar");
118 EXPECT_EQ(tokens[3], "b");
119 }
120
121 /* ******** Tests for string_replace() ******** */
122
TEST(util_string_replace,empty_haystack_and_other)123 TEST(util_string_replace, empty_haystack_and_other)
124 {
125 string str = "";
126 string_replace(str, "x", "");
127 EXPECT_EQ(str, "");
128 }
129
TEST(util_string_replace,empty_haystack)130 TEST(util_string_replace, empty_haystack)
131 {
132 string str = "";
133 string_replace(str, "x", "y");
134 EXPECT_EQ(str, "");
135 }
136
TEST(util_string_replace,empty_other)137 TEST(util_string_replace, empty_other)
138 {
139 string str = "x";
140 string_replace(str, "x", "");
141 EXPECT_EQ(str, "");
142 }
143
TEST(util_string_replace,long_haystack_empty_other)144 TEST(util_string_replace, long_haystack_empty_other)
145 {
146 string str = "a x b xxc";
147 string_replace(str, "x", "");
148 EXPECT_EQ(str, "a b c");
149 }
150
TEST(util_string_replace,long_haystack)151 TEST(util_string_replace, long_haystack)
152 {
153 string str = "a x b xxc";
154 string_replace(str, "x", "FOO");
155 EXPECT_EQ(str, "a FOO b FOOFOOc");
156 }
157
158 /* ******** Tests for string_endswith() ******** */
159
TEST(util_string_endswith,empty_both)160 TEST(util_string_endswith, empty_both)
161 {
162 bool endswith = string_endswith("", "");
163 EXPECT_TRUE(endswith);
164 }
165
TEST(util_string_endswith,empty_string)166 TEST(util_string_endswith, empty_string)
167 {
168 bool endswith = string_endswith("", "foo");
169 EXPECT_FALSE(endswith);
170 }
171
TEST(util_string_endswith,empty_end)172 TEST(util_string_endswith, empty_end)
173 {
174 bool endswith = string_endswith("foo", "");
175 EXPECT_TRUE(endswith);
176 }
177
TEST(util_string_endswith,simple_true)178 TEST(util_string_endswith, simple_true)
179 {
180 bool endswith = string_endswith("foo bar", "bar");
181 EXPECT_TRUE(endswith);
182 }
183
TEST(util_string_endswith,simple_false)184 TEST(util_string_endswith, simple_false)
185 {
186 bool endswith = string_endswith("foo bar", "foo");
187 EXPECT_FALSE(endswith);
188 }
189
190 /* ******** Tests for string_strip() ******** */
191
TEST(util_string_strip,empty)192 TEST(util_string_strip, empty)
193 {
194 string str = string_strip("");
195 EXPECT_EQ(str, "");
196 }
197
TEST(util_string_strip,only_spaces)198 TEST(util_string_strip, only_spaces)
199 {
200 string str = string_strip(" ");
201 EXPECT_EQ(str, "");
202 }
203
TEST(util_string_strip,no_spaces)204 TEST(util_string_strip, no_spaces)
205 {
206 string str = string_strip("foo bar");
207 EXPECT_EQ(str, "foo bar");
208 }
209
TEST(util_string_strip,with_spaces)210 TEST(util_string_strip, with_spaces)
211 {
212 string str = string_strip(" foo bar ");
213 EXPECT_EQ(str, "foo bar");
214 }
215
216 /* ******** Tests for string_remove_trademark() ******** */
217
TEST(util_string_remove_trademark,empty)218 TEST(util_string_remove_trademark, empty)
219 {
220 string str = string_remove_trademark("");
221 EXPECT_EQ(str, "");
222 }
223
TEST(util_string_remove_trademark,no_trademark)224 TEST(util_string_remove_trademark, no_trademark)
225 {
226 string str = string_remove_trademark("foo bar");
227 EXPECT_EQ(str, "foo bar");
228 }
229
TEST(util_string_remove_trademark,only_tm)230 TEST(util_string_remove_trademark, only_tm)
231 {
232 string str = string_remove_trademark("foo bar(TM) zzz");
233 EXPECT_EQ(str, "foo bar zzz");
234 }
235
TEST(util_string_remove_trademark,only_r)236 TEST(util_string_remove_trademark, only_r)
237 {
238 string str = string_remove_trademark("foo bar(R) zzz");
239 EXPECT_EQ(str, "foo bar zzz");
240 }
241
TEST(util_string_remove_trademark,both)242 TEST(util_string_remove_trademark, both)
243 {
244 string str = string_remove_trademark("foo bar(TM)(R) zzz");
245 EXPECT_EQ(str, "foo bar zzz");
246 }
247
TEST(util_string_remove_trademark,both_space)248 TEST(util_string_remove_trademark, both_space)
249 {
250 string str = string_remove_trademark("foo bar(TM) (R) zzz");
251 EXPECT_EQ(str, "foo bar zzz");
252 }
253
TEST(util_string_remove_trademark,both_space_around)254 TEST(util_string_remove_trademark, both_space_around)
255 {
256 string str = string_remove_trademark("foo bar (TM) (R) zzz");
257 EXPECT_EQ(str, "foo bar zzz");
258 }
259
TEST(util_string_remove_trademark,trademark_space_suffix)260 TEST(util_string_remove_trademark, trademark_space_suffix)
261 {
262 string str = string_remove_trademark("foo bar (TM)");
263 EXPECT_EQ(str, "foo bar");
264 }
265
TEST(util_string_remove_trademark,trademark_space_middle)266 TEST(util_string_remove_trademark, trademark_space_middle)
267 {
268 string str = string_remove_trademark("foo bar (TM) baz");
269 EXPECT_EQ(str, "foo bar baz");
270 }
271
TEST(util_string_remove_trademark,r_space_suffix)272 TEST(util_string_remove_trademark, r_space_suffix)
273 {
274 string str = string_remove_trademark("foo bar (R)");
275 EXPECT_EQ(str, "foo bar");
276 }
277
TEST(util_string_remove_trademark,r_space_middle)278 TEST(util_string_remove_trademark, r_space_middle)
279 {
280 string str = string_remove_trademark("foo bar (R) baz");
281 EXPECT_EQ(str, "foo bar baz");
282 }
283
284 CCL_NAMESPACE_END
285