Example #1
0
        public void ParseTemplate_IfPathWithNoParameters_ReturnsLiteralTokensOnly()
        {
            var tokens = BindingTemplateParser.ParseTemplate("path-with-no-parameters");

            Assert.Equal(1, tokens.Count);
            Assert.Equal("path-with-no-parameters", tokens[0].AsLiteral);
        }
Example #2
0
        public void ParseTemplate_IfEmptyString_ReturnsEmptySequence()
        {
            var tokens = BindingTemplateParser.ParseTemplate(String.Empty);

            Assert.NotNull(tokens);
            Assert.Empty(tokens);
        }
Example #3
0
        public void ParseTemplate_IfPathContainsParameters_ReturnsParameterTokens()
        {
            var tokens = BindingTemplateParser.ParseTemplate("{path}-with-{parameters}");

            Assert.Equal(new List <string> {
                "path", "parameters"
            }, GetParameterNames(tokens));
        }
Example #4
0
        public void ParseTemplate_IfTripleBrackets_RecognizesParameter()
        {
            var tokens = BindingTemplateParser.ParseTemplate("{{{parameter}}}");

            Assert.Equal(new List <string> {
                "{", "parameter", "}"
            }, GetTokenValues(tokens));
        }
Example #5
0
        public void ParseTemplate_IfValidInput_ReturnsTokens()
        {
            var tokens = BindingTemplateParser.ParseTemplate(@"{p1}-p2/{{2014}}/{d3}/folder/{name}.{ext}");

            Assert.NotNull(tokens);
            Assert.Equal(new List <string> {
                "p1", "-p2/", "{", "2014", "}", "/", "d3", "/folder/", "name", ".", "ext"
            },
                         GetTokenValues(tokens));
        }
        public void BuildCapturePattern_Doesnt_Allow_Expressions()
        {
            // binding expressions are not allowed in a capture pattern.
            // Captures just get top-level names.
            string pattern = @"{p1.p2}";
            var    tokens  = BindingTemplateParser.GetTokens(pattern).ToList();

            ExceptionAssert.ThrowsInvalidOperation(() => BindingTemplateToken.BuildCapturePattern(tokens),
                                                   "Capture expressions can't include dot operators");
        }
        public void BuildCapturePattern_IfValidTemplate_ReturnsValidRegexp()
        {
            string pattern = @"{p1}-p2/{{2014}}/{d3}/folder/{name}.{ext}";
            var    tokens  = BindingTemplateParser.GetTokens(pattern).ToList();

            string captureRegex = BindingTemplateSource.BuildCapturePattern(tokens);

            Assert.NotEmpty(captureRegex);
            Assert.Equal("^(?<p1>.*)-p2/\\{2014}/(?<d3>.*)/folder/(?<name>.*)\\.(?<ext>.*)$", captureRegex);
            Assert.NotNull(new Regex(captureRegex, RegexOptions.Compiled));
        }
Example #8
0
 public void ParseTemplate_IfUnbalancedBraces_ThrowsFormat()
 {
     ExceptionAssert.ThrowsFormat(
         () => BindingTemplateParser.ParseTemplate("}{param}{-path"),
         "Invalid template '}{param}{-path'. Missing opening bracket at position 1.");
 }
Example #9
0
 public void ParseTemplate_IfMalformedParam_ThrowsFormat()
 {
     ExceptionAssert.ThrowsFormat(
         () => BindingTemplateParser.ParseTemplate("{malformed-param}-path"),
         "Invalid template '{malformed-param}-path'. The parameter name 'malformed-param' is invalid.");
 }
Example #10
0
 public void ParseTemplate_IfMissingParam_ThrowsFormat()
 {
     ExceptionAssert.ThrowsFormat(
         () => BindingTemplateParser.ParseTemplate("{}-path"),
         "Invalid template '{}-path'. The parameter name at position 1 is empty.");
 }
Example #11
0
 public void ParseTemplate_IfNull_Throws()
 {
     ExceptionAssert.ThrowsArgumentNull(
         () => BindingTemplateParser.ParseTemplate(null),
         "input");
 }
Example #12
0
 public void ParseTemplate_IfMissingOpeningBracket_ThrowsFormat()
 {
     ExceptionAssert.ThrowsFormat(
         () => BindingTemplateParser.ParseTemplate("malformed}-path"),
         "Invalid template 'malformed}-path'. Missing opening bracket at position 10.");
 }
Example #13
0
 public void ParseTemplate_IfNestedParam_ThrowsFormat()
 {
     ExceptionAssert.ThrowsFormat(
         () => BindingTemplateParser.ParseTemplate("{a{nested}param}"),
         "Invalid template '{a{nested}param}'. Missing closing bracket at position 1.");
 }
Example #14
0
        public void ParseTemplate_IfPathWithNoParameters_ReturnsLiteralTokensOnly()
        {
            var tokens = BindingTemplateParser.ParseTemplate("path-with-no-parameters");

            Assert.Empty(tokens.Where(t => t.IsParameter));
        }