OILS / cpp / pylib_test.cc View on Github | oils.pub

67 lines, 42 significant
1#include "cpp/pylib.h"
2
3#include "mycpp/runtime.h"
4#include "vendor/greatest.h"
5
6TEST os_path_test() {
7 // TODO: use gc_mylib here, with NewStr(), StackRoots, etc.
8 BigStr* s = nullptr;
9
10 s = os_path::rstrip_slashes(StrFromC(""));
11 ASSERT(str_equals(s, StrFromC("")));
12
13 s = os_path::rstrip_slashes(StrFromC("foo"));
14 ASSERT(str_equals(s, StrFromC("foo")));
15
16 s = os_path::rstrip_slashes(StrFromC("foo/"));
17 ASSERT(str_equals(s, StrFromC("foo")));
18
19 s = os_path::rstrip_slashes(StrFromC("/foo/"));
20 ASSERT(str_equals(s, StrFromC("/foo")));
21
22 // special case of not stripping
23 s = os_path::rstrip_slashes(StrFromC("///"));
24 ASSERT(str_equals(s, StrFromC("///")));
25
26 ASSERT(path_stat::exists(StrFromC(".")));
27 ASSERT(path_stat::exists(StrFromC("/")));
28 ASSERT(path_stat::exists(StrFromC("/usr/bin/sh")));
29 ASSERT(!path_stat::exists(StrFromC("/nonexistent_ZZZ")));
30
31 PASS();
32}
33
34TEST isdir_test() {
35 ASSERT(path_stat::isdir(StrFromC(".")));
36 ASSERT(path_stat::isdir(StrFromC("/")));
37 ASSERT(!path_stat::isdir(StrFromC("/usr/bin/sh")));
38 ASSERT(!path_stat::isdir(StrFromC("/nonexistent_ZZZ")));
39
40 PASS();
41}
42
43TEST isfile_test() {
44 ASSERT(!path_stat::isfile(StrFromC(".")));
45 ASSERT(!path_stat::isfile(StrFromC("/")));
46 ASSERT(path_stat::isfile(StrFromC("/usr/bin/sh")));
47 ASSERT(!path_stat::isfile(StrFromC("/nonexistent_ZZZ")));
48
49 PASS();
50}
51
52GREATEST_MAIN_DEFS();
53
54int main(int argc, char** argv) {
55 gHeap.Init();
56
57 GREATEST_MAIN_BEGIN();
58
59 RUN_TEST(os_path_test);
60 RUN_TEST(isdir_test);
61 RUN_TEST(isfile_test);
62
63 gHeap.CleanProcessExit();
64
65 GREATEST_MAIN_END();
66 return 0;
67}