-
Notifications
You must be signed in to change notification settings - Fork 11
/
test_pathUtils.cpp
52 lines (50 loc) · 2.25 KB
/
test_pathUtils.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "scorepy/pathUtils.hpp"
#include <iostream>
#include <stdexcept>
#define TEST(condition) \
if (!(condition)) \
throw std::runtime_error(std::string("Test ") + #condition + " failed at " + __FILE__ + ":" + \
std::to_string(__LINE__))
int main()
{
using scorepy::abspath;
// Multiple slashes at start collapsed to 1
TEST(abspath("/abc") == "/abc");
TEST(abspath("//abc") == "//abc");
TEST(abspath("///abc") == "/abc");
TEST(abspath("////abc") == "/abc");
// Trailing slashes and multiple slashes removed
TEST(abspath("/abc/") == "/abc");
TEST(abspath("/abc//") == "/abc");
TEST(abspath("/abc//de") == "/abc/de");
TEST(abspath("/abc//de///fg") == "/abc/de/fg");
TEST(abspath("/abc//de///fg/") == "/abc/de/fg");
TEST(abspath("/abc//de///fg////") == "/abc/de/fg");
TEST(abspath("//abc/") == "//abc");
TEST(abspath("//abc//") == "//abc");
TEST(abspath("//abc//de") == "//abc/de");
TEST(abspath("//abc//de///fg") == "//abc/de/fg");
TEST(abspath("//abc//de///fg/") == "//abc/de/fg");
TEST(abspath("//abc//de///fg////") == "//abc/de/fg");
// Single dots removed
TEST(abspath("/./abc/./defgh/./ijkl/.") == "/abc/defgh/ijkl");
TEST(abspath("/./abc././def.gh/./ijkl././.mn/.") == "/abc./def.gh/ijkl./.mn");
// Going up 1 level removes prior folder
TEST(abspath("/abc/..") == "/");
TEST(abspath("//abc/..") == "//");
TEST(abspath("///abc/..") == "/");
TEST(abspath("/abc/../de") == "/de");
TEST(abspath("//abc/../de") == "//de");
TEST(abspath("///abc/../de") == "/de");
TEST(abspath("/abc/de/../fg") == "/abc/fg");
TEST(abspath("/abc/de/../../fg") == "/fg");
TEST(abspath("/abc/de../../fg") == "/abc/fg");
TEST(abspath("/abc../de/../fg") == "/abc../fg");
// Going up from root does nothing
TEST(abspath("/../ab") == "/ab");
TEST(abspath("//../ab") == "//ab");
TEST(abspath("///../ab") == "/ab");
TEST(abspath("/abc/defgh/../../ijkl") == "/ijkl");
TEST(abspath("//abc/defgh/../../ijkl") == "//ijkl");
TEST(abspath("///abc/defgh/../../ijkl") == "/ijkl");
}