Blender V4.3
util_path_test.cpp
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
2 *
3 * SPDX-License-Identifier: Apache-2.0 */
4
5#include "testing/testing.h"
6
7#include "util/path.h"
8
10
11/* ******** Tests for path_filename() ******** */
12
13#ifndef _WIN32
14TEST(util_path_filename, simple_unix)
15{
16 string str = path_filename("/tmp/foo.txt");
17 EXPECT_EQ(str, "foo.txt");
18}
19
20TEST(util_path_filename, root_unix)
21{
22 string str = path_filename("/");
23 EXPECT_EQ(str, "/");
24}
25
26TEST(util_path_filename, last_slash_unix)
27{
28 string str = path_filename("/tmp/foo.txt/");
29 EXPECT_EQ(str, ".");
30}
31
32TEST(util_path_filename, alternate_slash_unix)
33{
34 string str = path_filename("/tmp\\foo.txt");
35 EXPECT_EQ(str, "tmp\\foo.txt");
36}
37#endif /* !_WIN32 */
38
39TEST(util_path_filename, file_only)
40{
41 string str = path_filename("foo.txt");
42 EXPECT_EQ(str, "foo.txt");
43}
44
45TEST(util_path_filename, empty)
46{
47 string str = path_filename("");
48 EXPECT_EQ(str, "");
49}
50
51#ifdef _WIN32
52TEST(util_path_filename, simple_windows)
53{
54 string str = path_filename("C:\\tmp\\foo.txt");
55 EXPECT_EQ(str, "foo.txt");
56}
57
58TEST(util_path_filename, root_windows)
59{
60 string str = path_filename("C:\\");
61 EXPECT_EQ(str, "\\");
62}
63
64TEST(util_path_filename, last_slash_windows)
65{
66 string str = path_filename("C:\\tmp\\foo.txt\\");
67 EXPECT_EQ(str, ".");
68}
69
70TEST(util_path_filename, alternate_slash_windows)
71{
72 string str = path_filename("C:\\tmp/foo.txt");
73 EXPECT_EQ(str, "foo.txt");
74}
75#endif /* _WIN32 */
76
77/* ******** Tests for path_dirname() ******** */
78
79#ifndef _WIN32
80TEST(util_path_dirname, simple_unix)
81{
82 string str = path_dirname("/tmp/foo.txt");
83 EXPECT_EQ(str, "/tmp");
84}
85
86TEST(util_path_dirname, root_unix)
87{
88 string str = path_dirname("/");
89 EXPECT_EQ(str, "");
90}
91
92TEST(util_path_dirname, last_slash_unix)
93{
94 string str = path_dirname("/tmp/foo.txt/");
95 EXPECT_EQ(str, "/tmp/foo.txt");
96}
97
98TEST(util_path_dirname, alternate_slash_unix)
99{
100 string str = path_dirname("/tmp\\foo.txt");
101 EXPECT_EQ(str, "/");
102}
103#endif /* !_WIN32 */
104
105TEST(util_path_dirname, file_only)
106{
107 string str = path_dirname("foo.txt");
108 EXPECT_EQ(str, "");
109}
110
111TEST(util_path_dirname, empty)
112{
113 string str = path_dirname("");
114 EXPECT_EQ(str, "");
115}
116
117#ifdef _WIN32
118TEST(util_path_dirname, simple_windows)
119{
120 string str = path_dirname("C:\\tmp\\foo.txt");
121 EXPECT_EQ(str, "C:\\tmp");
122}
123
124TEST(util_path_dirname, root_windows)
125{
126 string str = path_dirname("C:\\");
127 EXPECT_EQ(str, "C:");
128}
129
130TEST(util_path_dirname, last_slash_windows)
131{
132 string str = path_dirname("C:\\tmp\\foo.txt\\");
133 EXPECT_EQ(str, "C:\\tmp\\foo.txt");
134}
135
136TEST(util_path_dirname, alternate_slash_windows)
137{
138 string str = path_dirname("C:\\tmp/foo.txt");
139 EXPECT_EQ(str, "C:\\tmp");
140}
141#endif /* _WIN32 */
142
143/* ******** Tests for path_join() ******** */
144
145TEST(util_path_join, empty_both)
146{
147 string str = path_join("", "");
148 EXPECT_EQ(str, "");
149}
150
151TEST(util_path_join, empty_directory)
152{
153 string str = path_join("", "foo.txt");
154 EXPECT_EQ(str, "foo.txt");
155}
156
157TEST(util_path_join, empty_filename)
158{
159 string str = path_join("foo", "");
160 EXPECT_EQ(str, "foo");
161}
162
163#ifndef _WIN32
164TEST(util_path_join, simple_unix)
165{
166 string str = path_join("foo", "bar");
167 EXPECT_EQ(str, "foo/bar");
168}
169
170TEST(util_path_join, directory_slash_unix)
171{
172 string str = path_join("foo/", "bar");
173 EXPECT_EQ(str, "foo/bar");
174}
175
176TEST(util_path_join, filename_slash_unix)
177{
178 string str = path_join("foo", "/bar");
179 EXPECT_EQ(str, "foo/bar");
180}
181
182TEST(util_path_join, both_slash_unix)
183{
184 string str = path_join("foo/", "/bar");
185 EXPECT_EQ(str, "foo//bar");
186}
187
188TEST(util_path_join, directory_alternate_slash_unix)
189{
190 string str = path_join("foo\\", "bar");
191 EXPECT_EQ(str, "foo\\/bar");
192}
193
194TEST(util_path_join, filename_alternate_slash_unix)
195{
196 string str = path_join("foo", "\\bar");
197 EXPECT_EQ(str, "foo/\\bar");
198}
199
200TEST(util_path_join, both_alternate_slash_unix)
201{
202 string str = path_join("foo", "\\bar");
203 EXPECT_EQ(str, "foo/\\bar");
204}
205
206TEST(util_path_join, empty_dir_filename_slash_unix)
207{
208 string str = path_join("", "/foo.txt");
209 EXPECT_EQ(str, "/foo.txt");
210}
211
212TEST(util_path_join, empty_dir_filename_alternate_slash_unix)
213{
214 string str = path_join("", "\\foo.txt");
215 EXPECT_EQ(str, "\\foo.txt");
216}
217
218TEST(util_path_join, empty_filename_dir_slash_unix)
219{
220 string str = path_join("foo/", "");
221 EXPECT_EQ(str, "foo/");
222}
223
224TEST(util_path_join, empty_filename_dir_alternate_slash_unix)
225{
226 string str = path_join("foo\\", "");
227 EXPECT_EQ(str, "foo\\");
228}
229#else /* !_WIN32 */
230TEST(util_path_join, simple_windows)
231{
232 string str = path_join("foo", "bar");
233 EXPECT_EQ(str, "foo\\bar");
234}
235
236TEST(util_path_join, directory_slash_windows)
237{
238 string str = path_join("foo\\", "bar");
239 EXPECT_EQ(str, "foo\\bar");
240}
241
242TEST(util_path_join, filename_slash_windows)
243{
244 string str = path_join("foo", "\\bar");
245 EXPECT_EQ(str, "foo\\bar");
246}
247
248TEST(util_path_join, both_slash_windows)
249{
250 string str = path_join("foo\\", "\\bar");
251 EXPECT_EQ(str, "foo\\\\bar");
252}
253
254TEST(util_path_join, directory_alternate_slash_windows)
255{
256 string str = path_join("foo/", "bar");
257 EXPECT_EQ(str, "foo/bar");
258}
259
260TEST(util_path_join, filename_alternate_slash_windows)
261{
262 string str = path_join("foo", "/bar");
263 EXPECT_EQ(str, "foo/bar");
264}
265
266TEST(util_path_join, both_alternate_slash_windows)
267{
268 string str = path_join("foo/", "/bar");
269 EXPECT_EQ(str, "foo//bar");
270}
271
272TEST(util_path_join, empty_dir_filename_slash_windows)
273{
274 string str = path_join("", "\\foo.txt");
275 EXPECT_EQ(str, "\\foo.txt");
276}
277
278TEST(util_path_join, empty_dir_filename_alternate_slash_windows)
279{
280 string str = path_join("", "/foo.txt");
281 EXPECT_EQ(str, "/foo.txt");
282}
283
284TEST(util_path_join, empty_filename_dir_slash_windows)
285{
286 string str = path_join("foo\\", "");
287 EXPECT_EQ(str, "foo\\");
288}
289
290TEST(util_path_join, empty_filename_dir_alternate_slash_windows)
291{
292 string str = path_join("foo/", "");
293 EXPECT_EQ(str, "foo/");
294}
295#endif /* !_WIN32 */
296
297/* ******** Tests for path_escape() ******** */
298
299TEST(util_path_escape, no_escape_chars)
300{
301 string str = path_escape("/tmp/foo/bar");
302 EXPECT_EQ(str, "/tmp/foo/bar");
303}
304
305TEST(util_path_escape, simple)
306{
307 string str = path_escape("/tmp/foo bar");
308 EXPECT_EQ(str, "/tmp/foo\\ bar");
309}
310
311TEST(util_path_escape, simple_end)
312{
313 string str = path_escape("/tmp/foo/bar ");
314 EXPECT_EQ(str, "/tmp/foo/bar\\ ");
315}
316
317TEST(util_path_escape, multiple)
318{
319 string str = path_escape("/tmp/foo bar");
320 EXPECT_EQ(str, "/tmp/foo\\ \\ bar");
321}
322
323TEST(util_path_escape, simple_multiple_end)
324{
325 string str = path_escape("/tmp/foo/bar ");
326 EXPECT_EQ(str, "/tmp/foo/bar\\ \\ ");
327}
328
329/* ******** Tests for path_is_relative() ******** */
330
331TEST(util_path_is_relative, filename)
332{
333 bool is_relative = path_is_relative("foo.txt");
334 EXPECT_TRUE(is_relative);
335}
336
337#ifndef _WIN32
338TEST(util_path_is_relative, absolute_unix)
339{
340 bool is_relative = path_is_relative("/tmp/foo.txt");
341 EXPECT_FALSE(is_relative);
342}
343
344TEST(util_path_is_relative, relative_dir_unix)
345{
346 bool is_relative = path_is_relative("tmp/foo.txt");
347 EXPECT_TRUE(is_relative);
348}
349
350TEST(util_path_is_relative, absolute_windir_on_unix)
351{
352 bool is_relative = path_is_relative("C:\\tmp\\foo.txt");
353 EXPECT_TRUE(is_relative);
354}
355
356TEST(util_path_is_relative, relative_windir_on_unix)
357{
358 bool is_relative = path_is_relative("tmp\\foo.txt");
359 EXPECT_TRUE(is_relative);
360}
361#endif /* !_WIN32 */
362
363#ifdef _WIN32
364TEST(util_path_is_relative, absolute_windows)
365{
366 bool is_relative = path_is_relative("C:\\tmp\\foo.txt");
367 EXPECT_FALSE(is_relative);
368}
369
370TEST(util_path_is_relative, relative_dir_windows)
371{
372 bool is_relative = path_is_relative("tmp\\foo.txt");
373 EXPECT_TRUE(is_relative);
374}
375
376TEST(util_path_is_relative, absolute_unixdir_on_windows)
377{
378 bool is_relative = path_is_relative("/tmp/foo.txt");
379 EXPECT_TRUE(is_relative);
380}
381
382TEST(util_path_is_relative, relative_unixdir_on_windows)
383{
384 bool is_relative = path_is_relative("tmp/foo.txt");
385 EXPECT_TRUE(is_relative);
386}
387#endif /* _WIN32 */
388
EXPECT_EQ(BLI_expr_pylike_eval(expr, nullptr, 0, &result), EXPR_PYLIKE_INVALID)
#define CCL_NAMESPACE_END
#define str(s)
string path_dirname(const string &path)
Definition path.cpp:403
bool path_is_relative(const string &path)
Definition path.cpp:446
string path_join(const string &dir, const string &file)
Definition path.cpp:417
string path_escape(const string &path)
Definition path.cpp:439
string path_filename(const string &path)
Definition path.cpp:380
CCL_NAMESPACE_BEGIN TEST(util_path_filename, simple_unix)