Example #1
0
        public void TestCompoundFragmentExpansionAssociativeMapVariable()
        {
            string template = "{#keys*}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            string[] allowed =
            {
                "#comma=,,dot=.,semi=;",
                "#comma=,,semi=;,dot=.",
                "#dot=.,comma=,,semi=;",
                "#dot=.,semi=;,comma=,",
                "#semi=;,comma=,,dot=.",
                "#semi=;,dot=.,comma=,"
            };

            CollectionAssert.Contains(allowed, uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "list" }, new[] { "keys" });

            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["keys"], (ICollection)match.Bindings["keys"].Value);

            match = uriTemplate.Match(uri, RequiredVariables, new[] { "list" }, new[] { "keys" });
            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["keys"], (ICollection)match.Bindings["keys"].Value);
        }
Example #2
0
        public void TestEscapeSequences1()
        {
            string template = "/base{/group_id,first_name}/pages{/page,lang}{?format,q}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables1);

            Assert.AreEqual("/base/12345/John/pages/5/en?format=json&q=URI%20Templates", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["group_id"], match.Bindings["group_id"].Value);
            Assert.AreEqual(Variables1["first_name"], match.Bindings["first_name"].Value);
            Assert.AreEqual(Variables1["page"], match.Bindings["page"].Value);
            Assert.AreEqual(Variables1["lang"], match.Bindings["lang"].Value);
            Assert.AreEqual(Variables1["format"], match.Bindings["format"].Value);
            Assert.AreEqual(Variables1["q"], match.Bindings["q"].Value);

            match = uriTemplate.Match(uri, RequiredVariables1, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["group_id"], match.Bindings["group_id"].Value);
            Assert.AreEqual(Variables1["first_name"], match.Bindings["first_name"].Value);
            Assert.AreEqual(Variables1["page"], match.Bindings["page"].Value);
            Assert.AreEqual(Variables1["lang"], match.Bindings["lang"].Value);
            Assert.AreEqual(Variables1["format"], match.Bindings["format"].Value);
            Assert.AreEqual(Variables1["q"], match.Bindings["q"].Value);
        }
Example #3
0
        public void TestPathParameterExpansionAssociativeMapVariable()
        {
            string template = "{;keys}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            string[] allowed =
            {
                ";keys=comma,%2C,dot,.,semi,%3B",
                ";keys=comma,%2C,semi,%3B,dot,.",
                ";keys=dot,.,comma,%2C,semi,%3B",
                ";keys=dot,.,semi,%3B,comma,%2C",
                ";keys=semi,%3B,comma,%2C,dot,.",
                ";keys=semi,%3B,dot,.,comma,%2C"
            };

            CollectionAssert.Contains(allowed, uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "list" }, new[] { "keys" });

            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["keys"], (ICollection)match.Bindings["keys"].Value);

            match = uriTemplate.Match(uri, RequiredVariables, new[] { "list" }, new[] { "keys" });
            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["keys"], (ICollection)match.Bindings["keys"].Value);
        }
Example #4
0
        public void TestCompoundQueryExpansionAssociativeMapVariable()
        {
            string template = "{?keys*}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            string[] allowed =
            {
                "?comma=%2C&dot=.&semi=%3B",
                "?comma=%2C&semi=%3B&dot=.",
                "?dot=.&comma=%2C&semi=%3B",
                "?dot=.&semi=%3B&comma=%2C",
                "?semi=%3B&comma=%2C&dot=.",
                "?semi=%3B&dot=.&comma=%2C"
            };

            CollectionAssert.Contains(allowed, uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "list" }, new[] { "keys" });

            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["keys"], (ICollection)match.Bindings["keys"].Value);

            match = uriTemplate.Match(uri, RequiredVariables, new[] { "list" }, new[] { "keys" });
            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["keys"], (ICollection)match.Bindings["keys"].Value);
        }
Example #5
0
        public void TestReservedExpansionAssociativeMapVariable()
        {
            string template = "{+keys}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            string[] allowed =
            {
                "comma,,,dot,.,semi,;",
                "comma,,,semi,;,dot,.",
                "dot,.,comma,,,semi,;",
                "dot,.,semi,;,comma,,",
                "semi,;,comma,,,dot,.",
                "semi,;,dot,.,comma,,"
            };

            CollectionAssert.Contains(allowed, uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "list" }, new[] { "keys" });

            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["keys"], (ICollection)match.Bindings["keys"].Value);

            match = uriTemplate.Match(uri, RequiredVariables, new[] { "list" }, new[] { "keys" });
            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["keys"], (ICollection)match.Bindings["keys"].Value);
        }
        public void TestPlusOperatorAssociativeMapTemplate()
        {
            string template = "{+keys:1}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Should.Throw <InvalidOperationException>(() => uriTemplate.BindByName(Variables));
        }
        public void TestEmptyTemplate()
        {
            string template = string.Empty;

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual(string.Empty, uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri);

            Assert.IsNotNull(match);
            Assert.AreEqual(0, match.Bindings.Count);
        }
Example #8
0
        public void TestPathSegmentExpansionMultipleReferencesPrefix()
        {
            string template = "{/var:1,var}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual("/v/value", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "list" }, new[] { "keys" });

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["var"], match.Bindings["var"].Value);

            match = uriTemplate.Match(uri, RequiredVariables, new[] { "list" }, new[] { "keys" });
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["var"], match.Bindings["var"].Value);
        }
Example #9
0
        public void TestSimpleExpansionLongPrefix()
        {
            string template = "{var:30}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual("value", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "list" }, new[] { "keys" });

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["var"], match.Bindings["var"].Value);

            match = uriTemplate.Match(uri, RequiredVariables, new[] { "list" }, new[] { "keys" });
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["var"], match.Bindings["var"].Value);
        }
Example #10
0
        public void TestFragmentExpansionPrefixVariable()
        {
            string template = "{#path:6}/here";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual("#/foo/b/here", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "list" }, new[] { "keys" });

            Assert.IsNotNull(match);
            Assert.AreEqual(((string)Variables["path"]).Substring(0, 6), match.Bindings["path"].Value);

            match = uriTemplate.Match(uri, RequiredVariables, new[] { "list" }, new[] { "keys" });
            Assert.IsNotNull(match);
            Assert.AreEqual(((string)Variables["path"]).Substring(0, 6), match.Bindings["path"].Value);
        }
Example #11
0
        public void TestEscapeSequences2()
        {
            string template = "/sparql{?query}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables1);

            Assert.AreEqual("/sparql?query=PREFIX%20dc%3A%20%3Chttp%3A%2F%2Fpurl.org%2Fdc%2Felements%2F1.1%2F%3E%20SELECT%20%3Fbook%20%3Fwho%20WHERE%20%7B%20%3Fbook%20dc%3Acreator%20%3Fwho%20%7D", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["query"], match.Bindings["query"].Value);

            match = uriTemplate.Match(uri, RequiredVariables1, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["query"], match.Bindings["query"].Value);
        }
Example #12
0
        public void TestQueryContinuationExpansionPrefixVariable()
        {
            string template = "{&var:3}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual("&var=val", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "list" }, new[] { "keys" });

            Assert.IsNotNull(match);
            Assert.AreEqual("val", match.Bindings["var"].Value);

            match = uriTemplate.Match(uri, RequiredVariables, new[] { "list" }, new[] { "keys" });
            Assert.IsNotNull(match);
            Assert.AreEqual("val", match.Bindings["var"].Value);
        }
Example #13
0
        public void TestEscapeSequences5()
        {
            string template = "/lookup{?Stra%C3%9Fe}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables1);

            Assert.AreEqual("/lookup?Stra%C3%9Fe=Gr%C3%BCner%20Weg", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["Stra%C3%9Fe"], match.Bindings["Stra%C3%9Fe"].Value);

            match = uriTemplate.Match(uri, RequiredVariables1, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["Stra%C3%9Fe"], match.Bindings["Stra%C3%9Fe"].Value);
        }
        public void TestReservedExpansionEscaping()
        {
            string template = "{+hello}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual("Hello%20World!", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri);

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["hello"], match.Bindings["hello"].Value);

            match = uriTemplate.Match(uri, RequiredVariables);
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["hello"], match.Bindings["hello"].Value);
        }
Example #15
0
        public void TestQueryExpansionWithIntegerVariable()
        {
            string template = "/set{?number}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables1);

            Assert.AreEqual("/set?number=6", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["number"].ToString(), match.Bindings["number"].Value);

            match = uriTemplate.Match(uri, RequiredVariables1, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["number"].ToString(), match.Bindings["number"].Value);
        }
Example #16
0
        public void TestSimpleExpansionNumericKeyCollectionVariable()
        {
            string template = "{1337}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables4);

            Assert.AreEqual("leet,as,it,can,be", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "1337" }, new[] { "german" });

            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables4["1337"], (ICollection)match.Bindings["1337"].Value);

            match = uriTemplate.Match(uri, RequiredVariables4, new[] { "1337" }, new[] { "german" });
            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables4["1337"], (ICollection)match.Bindings["1337"].Value);
        }
Example #17
0
        public void TestCompoundQueryExpansionNumericKeyCollectionVariable()
        {
            string template = "{?1337*}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables4);

            Assert.AreEqual("?1337=leet&1337=as&1337=it&1337=can&1337=be", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "1337" }, new[] { "german" });

            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables4["1337"], (ICollection)match.Bindings["1337"].Value);

            match = uriTemplate.Match(uri, RequiredVariables4, new[] { "1337" }, new[] { "german" });
            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables4["1337"], (ICollection)match.Bindings["1337"].Value);
        }
Example #18
0
        public void TestQueryExpansionNumericKey()
        {
            string template = "{?42}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables4);

            Assert.AreEqual("?42=The%20Answer%20to%20the%20Ultimate%20Question%20of%20Life%2C%20the%20Universe%2C%20and%20Everything", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "1337" }, new[] { "german" });

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables4["42"], match.Bindings["42"].Value);

            match = uriTemplate.Match(uri, RequiredVariables4, new[] { "1337" }, new[] { "german" });
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables4["42"], match.Bindings["42"].Value);
        }
Example #19
0
        public void TestCompoundQueryExpansionEmptyMap()
        {
            string template = "{?empty_assoc*}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables3);

            Assert.AreEqual(string.Empty, uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "empty_list" }, new[] { "empty_assoc" });

            Assert.IsNotNull(match);
            Assert.AreEqual(0, match.Bindings.Count);

            match = uriTemplate.Match(uri, RequiredVariables3, new[] { "empty_list" }, new[] { "empty_assoc" });
            Assert.IsNotNull(match);
            Assert.AreEqual(0, match.Bindings.Count);
        }
Example #20
0
        public void TestEscapeSequences7()
        {
            string template = "{?assoc_special_chars*}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables1);

            Assert.AreEqual("?%C5%A1%C3%B6%C3%A4%C5%B8%C5%93%C3%B1%C3%AA%E2%82%AC%C2%A3%C2%A5%E2%80%A1%C3%91%C3%92%C3%93%C3%94%C3%95=%C3%96%C3%97%C3%98%C3%99%C3%9A%C3%A0%C3%A1%C3%A2%C3%A3%C3%A4%C3%A5%C3%A6%C3%A7%C3%BF", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });

            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables1["assoc_special_chars"], (ICollection)match.Bindings["assoc_special_chars"].Value);

            match = uriTemplate.Match(uri, RequiredVariables1, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });
            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables1["assoc_special_chars"], (ICollection)match.Bindings["assoc_special_chars"].Value);
        }
Example #21
0
        public void TestPathParameterExpansionPrefixVariable()
        {
            string template = "{;hello:5}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual(";hello=Hello", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "list" }, new[] { "keys" });

            Assert.IsNotNull(match);
            Assert.AreEqual("Hello", match.Bindings["hello"].Value);

            match = uriTemplate.Match(uri, RequiredVariables, new[] { "list" }, new[] { "keys" });
            Assert.IsNotNull(match);
            Assert.AreEqual("Hello", match.Bindings["hello"].Value);
        }
Example #22
0
        public void TestCompoundPathSegmentExpansion()
        {
            string template = "{/id*}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables1);

            Assert.AreEqual("/person", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });

            Assert.IsNotNull(match);
            CollectionAssert.AreEqual(new[] { Variables1["id"] }, (ICollection)match.Bindings["id"].Value);

            match = uriTemplate.Match(uri, RequiredVariables1, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });
            Assert.IsNotNull(match);
            CollectionAssert.AreEqual(new[] { Variables1["id"] }, (ICollection)match.Bindings["id"].Value);
        }
Example #23
0
        public void TestCompoundPathParameterExpansionCollectionVariable()
        {
            string template = "{;list*}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual(";list=red;list=green;list=blue", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "list" }, new[] { "keys" });

            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["list"], (ICollection)match.Bindings["list"].Value);

            match = uriTemplate.Match(uri, RequiredVariables, new[] { "list" }, new[] { "keys" });
            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["list"], (ICollection)match.Bindings["list"].Value);
        }
        public void TestQueryContinuationExpansion()
        {
            string template = "?fixed=yes{&x}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual("?fixed=yes&x=1024", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri);

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["x"], match.Bindings["x"].Value);

            match = uriTemplate.Match(uri, RequiredVariables);
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["x"], match.Bindings["x"].Value);
        }
Example #25
0
        public void TestPathSegmentExpansionWithEncodedCharacters()
        {
            string template = "/test{/Some%20Thing}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables1);

            Assert.AreEqual("/test/foo", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["Some%20Thing"], match.Bindings["Some%20Thing"].Value);

            match = uriTemplate.Match(uri, RequiredVariables1, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["Some%20Thing"], match.Bindings["Some%20Thing"].Value);
        }
Example #26
0
        public void TestEscapeSequences3()
        {
            string template = "/go{?uri}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables1);

            Assert.AreEqual("/go?uri=http%3A%2F%2Fexample.org%2F%3Furi%3Dhttp%253A%252F%252Fexample.org%252F", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["uri"], match.Bindings["uri"].Value);

            match = uriTemplate.Match(uri, RequiredVariables1, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["uri"], match.Bindings["uri"].Value);
        }
Example #27
0
        public void TestQueryContinuationExpansionCollectionVariable()
        {
            string template = "{&list}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual("&list=red,green,blue", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "list" }, new[] { "keys" });

            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["list"], (ICollection)match.Bindings["list"].Value);

            match = uriTemplate.Match(uri, RequiredVariables, new[] { "list" }, new[] { "keys" });
            Assert.IsNotNull(match);
            CollectionAssert.AreEqual((ICollection)Variables["list"], (ICollection)match.Bindings["list"].Value);
        }
Example #28
0
        public void TestEscapeSequences4()
        {
            string template = "/service{?word}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables1);

            Assert.AreEqual("/service?word=dr%C3%BCcken", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["word"], match.Bindings["word"].Value);

            match = uriTemplate.Match(uri, RequiredVariables1, new[] { "fields", "geocode" }, new[] { "assoc_special_chars" });
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables1["word"], match.Bindings["word"].Value);
        }
        public void TestReservedExpansionReservedCharactersInQuery()
        {
            string template = "here?ref={+path}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual("here?ref=/foo/bar", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri);

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["path"], match.Bindings["path"].Value);

            match = uriTemplate.Match(uri, RequiredVariables);
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["path"], match.Bindings["path"].Value);
        }
        public void TestPathSegmentExpansion()
        {
            string template = "{/var}";

            global::UriTemplate.Core.UriTemplate uriTemplate = new global::UriTemplate.Core.UriTemplate(template);
            Uri uri = uriTemplate.BindByName(Variables);

            Assert.AreEqual("/value", uri.OriginalString);

            UriTemplateMatch match = uriTemplate.Match(uri);

            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["var"], match.Bindings["var"].Value);

            match = uriTemplate.Match(uri, RequiredVariables);
            Assert.IsNotNull(match);
            Assert.AreEqual(Variables["var"], match.Bindings["var"].Value);
        }