| 50 | } |
| 51 | |
| 52 | void normalize_test() |
| 53 | { |
| 54 | PATH_CHECK(path("").normalize(), ""); |
| 55 | PATH_CHECK(path("/").normalize(), "/"); |
| 56 | PATH_CHECK(path("//").normalize(), "//"); |
| 57 | PATH_CHECK(path("///").normalize(), "/"); |
| 58 | PATH_CHECK(path("f").normalize(), "f"); |
| 59 | PATH_CHECK(path("foo").normalize(), "foo"); |
| 60 | PATH_CHECK(path("foo/").normalize(), "foo/."); |
| 61 | PATH_CHECK(path("f/").normalize(), "f/."); |
| 62 | PATH_CHECK(path("/foo").normalize(), "/foo"); |
| 63 | PATH_CHECK(path("foo/bar").normalize(), "foo/bar"); |
| 64 | PATH_CHECK(path("..").normalize(), ".."); |
| 65 | PATH_CHECK(path("../..").normalize(), "../.."); |
| 66 | PATH_CHECK(path("/..").normalize(), "/.."); |
| 67 | PATH_CHECK(path("/../..").normalize(), "/../.."); |
| 68 | PATH_CHECK(path("../foo").normalize(), "../foo"); |
| 69 | PATH_CHECK(path("foo/..").normalize(), "."); |
| 70 | PATH_CHECK(path("foo/../").normalize(), "./."); |
| 71 | PATH_CHECK((path("foo") / "..").normalize() , "."); |
| 72 | PATH_CHECK(path("foo/...").normalize(), "foo/..."); |
| 73 | PATH_CHECK(path("foo/.../").normalize(), "foo/.../."); |
| 74 | PATH_CHECK(path("foo/..bar").normalize(), "foo/..bar"); |
| 75 | PATH_CHECK(path("../f").normalize(), "../f"); |
| 76 | PATH_CHECK(path("/../f").normalize(), "/../f"); |
| 77 | PATH_CHECK(path("f/..").normalize(), "."); |
| 78 | PATH_CHECK((path("f") / "..").normalize() , "."); |
| 79 | PATH_CHECK(path("foo/../..").normalize(), ".."); |
| 80 | PATH_CHECK(path("foo/../../").normalize(), "../."); |
| 81 | PATH_CHECK(path("foo/../../..").normalize(), "../.."); |
| 82 | PATH_CHECK(path("foo/../../../").normalize(), "../../."); |
| 83 | PATH_CHECK(path("foo/../bar").normalize(), "bar"); |
| 84 | PATH_CHECK(path("foo/../bar/").normalize(), "bar/."); |
| 85 | PATH_CHECK(path("foo/bar/..").normalize(), "foo"); |
| 86 | PATH_CHECK(path("foo/bar/../").normalize(), "foo/."); |
| 87 | PATH_CHECK(path("foo/bar/../..").normalize(), "."); |
| 88 | PATH_CHECK(path("foo/bar/../../").normalize(), "./."); |
| 89 | PATH_CHECK(path("foo/bar/../blah").normalize(), "foo/blah"); |
| 90 | PATH_CHECK(path("f/../b").normalize(), "b"); |
| 91 | PATH_CHECK(path("f/b/..").normalize(), "f"); |
| 92 | PATH_CHECK(path("f/b/../").normalize(), "f/."); |
| 93 | PATH_CHECK(path("f/b/../a").normalize(), "f/a"); |
| 94 | PATH_CHECK(path("foo/bar/blah/../..").normalize(), "foo"); |
| 95 | PATH_CHECK(path("foo/bar/blah/../../bletch").normalize(), "foo/bletch"); |
| 96 | PATH_CHECK(path("//net").normalize(), "//net"); |
| 97 | PATH_CHECK(path("//net/").normalize(), "//net/"); |
| 98 | PATH_CHECK(path("//..net").normalize(), "//..net"); |
| 99 | PATH_CHECK(path("//net/..").normalize(), "//net/.."); |
| 100 | PATH_CHECK(path("//net/foo").normalize(), "//net/foo"); |
| 101 | PATH_CHECK(path("//net/foo/").normalize(), "//net/foo/."); |
| 102 | PATH_CHECK(path("//net/foo/..").normalize(), "//net/"); |
| 103 | PATH_CHECK(path("//net/foo/../").normalize(), "//net/."); |
| 104 | |
| 105 | PATH_CHECK(path("/net/foo/bar").normalize(), "/net/foo/bar"); |
| 106 | PATH_CHECK(path("/net/foo/bar/").normalize(), "/net/foo/bar/."); |
| 107 | PATH_CHECK(path("/net/foo/..").normalize(), "/net"); |
| 108 | PATH_CHECK(path("/net/foo/../").normalize(), "/net/."); |
| 109 | |