MCPcopy Create free account
hub / github.com/boostorg/filesystem / lexically_relative_test

Function lexically_relative_test

test/relative_test.cpp:27–88  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25namespace {
26
27void lexically_relative_test()
28{
29 cout << "lexically_relative_test..." << endl;
30
31 BOOST_TEST(path("").lexically_relative("") == "");
32 BOOST_TEST(path("").lexically_relative("/foo") == "");
33 BOOST_TEST(path("/foo").lexically_relative("") == "");
34 BOOST_TEST(path("/foo").lexically_relative("/foo") == ".");
35 BOOST_TEST(path("").lexically_relative("foo") == "");
36 BOOST_TEST(path("foo").lexically_relative("") == "");
37 BOOST_TEST(path("foo").lexically_relative("foo") == ".");
38
39 BOOST_TEST(path("a/b/c").lexically_relative("a") == "b/c");
40 BOOST_TEST(path("a//b//c").lexically_relative("a") == "b/c");
41 BOOST_TEST(path("a/b/c").lexically_relative("a/b") == "c");
42 BOOST_TEST(path("a///b//c").lexically_relative("a//b") == "c");
43 BOOST_TEST(path("a/b/c").lexically_relative("a/b/c") == ".");
44 BOOST_TEST(path("a/b/c").lexically_relative("a/b/c/x") == "..");
45 BOOST_TEST(path("a/b/c").lexically_relative("a/b/c/x/y") == "../..");
46 BOOST_TEST(path("a/b/c").lexically_relative("a/x") == "../b/c");
47 BOOST_TEST(path("a/b/c").lexically_relative("a/b/x") == "../c");
48 BOOST_TEST(path("a/b/c").lexically_relative("a/x/y") == "../../b/c");
49 BOOST_TEST(path("a/b/c").lexically_relative("a/b/x/y") == "../../c");
50 BOOST_TEST(path("a/b/c").lexically_relative("a/b/c/x/y/z") == "../../..");
51 BOOST_TEST(path("a/b/c").lexically_relative("a/") == "b/c");
52 BOOST_TEST(path("a/b/c").lexically_relative("a/.") == "b/c");
53 BOOST_TEST(path("a/b/c").lexically_relative("a/./") == "b/c");
54 BOOST_TEST(path("a/b/c").lexically_relative("a/b/..") == "");
55 BOOST_TEST(path("a/b/c").lexically_relative("a/b/../") == "");
56 BOOST_TEST(path("a/b/c").lexically_relative("a/b/d/..") == "c");
57 BOOST_TEST(path("a/b/c").lexically_relative("a/b/d/../") == "c");
58
59 // paths unrelated except first element, and first element is root directory
60 BOOST_TEST(path("/a/b/c").lexically_relative("/x") == "../a/b/c");
61 BOOST_TEST(path("/a/b/c").lexically_relative("/x/y") == "../../a/b/c");
62 BOOST_TEST(path("/a/b/c").lexically_relative("/x/y/z") == "../../../a/b/c");
63
64 // paths unrelated
65 BOOST_TEST(path("a/b/c").lexically_relative("x") == "");
66 BOOST_TEST(path("a/b/c").lexically_relative("x/y") == "");
67 BOOST_TEST(path("a/b/c").lexically_relative("x/y/z") == "");
68 BOOST_TEST(path("a/b/c").lexically_relative("/x") == "");
69 BOOST_TEST(path("a/b/c").lexically_relative("/x/y") == "");
70 BOOST_TEST(path("a/b/c").lexically_relative("/x/y/z") == "");
71 BOOST_TEST(path("a/b/c").lexically_relative("/a/b/c") == "");
72
73 // TODO: add some Windows-only test cases that probe presence or absence of
74 // drive specifier-and root-directory
75
76 // Some tests from Jamie Allsop's paper
77 BOOST_TEST(path("/a/d").lexically_relative("/a/b/c") == "../../d");
78 BOOST_TEST(path("/a/b/c").lexically_relative("/a/d") == "../b/c");
79#ifdef BOOST_FILESYSTEM_WINDOWS_API
80 BOOST_TEST(path("c:\\y").lexically_relative("c:\\x") == "../y");
81#else
82 BOOST_TEST(path("c:\\y").lexically_relative("c:\\x") == "");
83#endif
84 BOOST_TEST(path("d:\\y").lexically_relative("c:\\x") == "");

Callers 1

test_mainFunction · 0.85

Calls 2

lexically_relativeMethod · 0.80
pathFunction · 0.70

Tested by

no test coverage detected