示例#1
0
        public void GetCanonicalPathTest()
        {
            Assert.Same("", UriUtils.GetCanonicalPath(""));
            Assert.Same("/", UriUtils.GetCanonicalPath("/"));

            // '.'

            Assert.Equal("", UriUtils.GetCanonicalPath("."));
            Assert.Equal("", UriUtils.GetCanonicalPath("./"));
            Assert.Equal("", UriUtils.GetCanonicalPath("./."));
            Assert.Equal("", UriUtils.GetCanonicalPath("././"));
            Assert.Equal("", UriUtils.GetCanonicalPath("././."));

            Assert.Equal("a", UriUtils.GetCanonicalPath("a/."));
            Assert.Equal("a/", UriUtils.GetCanonicalPath("a/./"));
            Assert.Equal("a", UriUtils.GetCanonicalPath("a/./."));
            Assert.Equal("a/", UriUtils.GetCanonicalPath("a/././"));

            Assert.Equal("/", UriUtils.GetCanonicalPath("/."));
            Assert.Equal("/", UriUtils.GetCanonicalPath("/./"));
            Assert.Equal("/", UriUtils.GetCanonicalPath("/./."));
            Assert.Equal("/", UriUtils.GetCanonicalPath("/././"));

            Assert.Equal("/a", UriUtils.GetCanonicalPath("/a/."));
            Assert.Equal("/a/", UriUtils.GetCanonicalPath("/a/./"));
            Assert.Equal("/a", UriUtils.GetCanonicalPath("/a/./."));
            Assert.Equal("/a/", UriUtils.GetCanonicalPath("/a/././"));

            // '..'

            Assert.Equal("..", UriUtils.GetCanonicalPath(".."));
            Assert.Equal("../", UriUtils.GetCanonicalPath("../"));
            Assert.Equal("../..", UriUtils.GetCanonicalPath("../.."));
            Assert.Equal("../../", UriUtils.GetCanonicalPath("../../"));
            Assert.Equal("../../..", UriUtils.GetCanonicalPath("../../.."));

            Assert.Equal("", UriUtils.GetCanonicalPath("a/.."));
            Assert.Equal("", UriUtils.GetCanonicalPath("a/../"));
            Assert.Equal("..", UriUtils.GetCanonicalPath("a/../.."));
            Assert.Equal("../", UriUtils.GetCanonicalPath("a/../../"));

            Assert.Equal("/..", UriUtils.GetCanonicalPath("/../."));
            Assert.Equal("/../", UriUtils.GetCanonicalPath("/.././"));
            Assert.Equal("/../..", UriUtils.GetCanonicalPath("/../../."));
            Assert.Equal("/../../", UriUtils.GetCanonicalPath("/../.././"));
            Assert.Equal("/../..", UriUtils.GetCanonicalPath("/.././.."));
            Assert.Equal("/../../", UriUtils.GetCanonicalPath("/.././../"));

            Assert.Equal("", UriUtils.GetCanonicalPath("a/../."));
            Assert.Equal("", UriUtils.GetCanonicalPath("a/.././"));
            Assert.Equal("..", UriUtils.GetCanonicalPath("a/../../."));
            Assert.Equal("../", UriUtils.GetCanonicalPath("a/../.././"));
            Assert.Equal("..", UriUtils.GetCanonicalPath("a/.././.."));
            Assert.Equal("../", UriUtils.GetCanonicalPath("a/.././../"));

            Assert.Equal("", UriUtils.GetCanonicalPath("../a"));
            Assert.Equal("", UriUtils.GetCanonicalPath("../a/"));
            Assert.Equal("..", UriUtils.GetCanonicalPath("../../a"));
            Assert.Equal("../", UriUtils.GetCanonicalPath("../../a/"));
            Assert.Equal("b", UriUtils.GetCanonicalPath("../a/b"));
            Assert.Equal("b/", UriUtils.GetCanonicalPath("../a/b/"));

            Assert.Equal("/", UriUtils.GetCanonicalPath("/../a"));
            Assert.Equal("/", UriUtils.GetCanonicalPath("/../a/"));
            Assert.Equal("/..", UriUtils.GetCanonicalPath("/../../a"));
            Assert.Equal("/../", UriUtils.GetCanonicalPath("/../../a/"));
            Assert.Equal("/b", UriUtils.GetCanonicalPath("/../a/b"));
            Assert.Equal("/b/", UriUtils.GetCanonicalPath("/../a/b/"));

            Assert.Equal("", UriUtils.GetCanonicalPath("a/../../b"));
            Assert.Equal("", UriUtils.GetCanonicalPath("a/../../b/"));
            Assert.Equal("/", UriUtils.GetCanonicalPath("/a/../../b"));
            Assert.Equal("/", UriUtils.GetCanonicalPath("/a/../../b/"));

            // '/'

            Assert.Equal("/", UriUtils.GetCanonicalPath("//"));
            Assert.Equal("/", UriUtils.GetCanonicalPath("///"));

            Assert.Equal("/", UriUtils.GetCanonicalPath("//"));
            Assert.Equal("/", UriUtils.GetCanonicalPath("///"));

            Assert.Equal("/", UriUtils.GetCanonicalPath("//."));
            Assert.Equal("", UriUtils.GetCanonicalPath(".//"));
            Assert.Equal("/", UriUtils.GetCanonicalPath("//.//"));

            Assert.Equal("/a", UriUtils.GetCanonicalPath("//a"));
            Assert.Equal("a/", UriUtils.GetCanonicalPath("a//"));
            Assert.Equal("/a/", UriUtils.GetCanonicalPath("//a//"));

            // special file names

            Assert.Same(".git", UriUtils.GetCanonicalPath(".git"));
            Assert.Same("git.", UriUtils.GetCanonicalPath("git."));
            Assert.Same("..git", UriUtils.GetCanonicalPath("..git"));
            Assert.Same("git..", UriUtils.GetCanonicalPath("git.."));
            Assert.Same("...", UriUtils.GetCanonicalPath("..."));

            // other

            Assert.Same("a/b/c", UriUtils.GetCanonicalPath("a/b/c"));

            Assert.Equal("a/c", UriUtils.GetCanonicalPath("a///b/.././/c"));
            Assert.Equal("/a/c", UriUtils.GetCanonicalPath("///a/b/.././/c"));

            Assert.Equal("/xx/zz/abc.def", UriUtils.GetCanonicalPath("/xx/yy/../zz/.//abc.def"));
        }
示例#2
0
        public void BuildUrlTest()
        {
            Assert.Equal("/path/to/resource/?key=0&value=zero", UriUtils.BuildUrl(new[] { "/path", "to", "resource/" }, new { key = 0, value = "zero" }));
            Assert.Equal("/path/to/resource/?value=1&value=2&value=3", UriUtils.BuildUrl(new[] { "/path/", "/to/", "/resource/" }, new Dictionary <string, object> {
                ["value"] = new[] { 1, 2, 3 }
            }));

            Assert.Equal("http://example.com:1234/path?key=0&value=zero#section", UriUtils.BuildUrl(new[] { "http://example.com:1234/", "path" }, new { key = 0, value = "zero" }, "section"));
            Assert.Equal("http://example.com:1234/path?value=1&value=2&value=3#section", UriUtils.BuildUrl(new[] { "http://example.com:1234/", "path" }, new Dictionary <string, object> {
                ["value"] = new[] { 1, 2, 3 }
            }, "section"));

            Assert.Equal("http://example.com:1234/path?key=0&value=zero#s%23ct%3Fon", UriUtils.BuildUrl(new[] { "http://example.com:1234/", "path" }, new { key = 0, value = "zero" }, "s#ct?on"));
        }