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); }
public void ParseTemplate_IfEmptyString_ReturnsEmptySequence() { var tokens = BindingTemplateParser.ParseTemplate(String.Empty); Assert.NotNull(tokens); Assert.Empty(tokens); }
public void ParseTemplate_IfPathContainsParameters_ReturnsParameterTokens() { var tokens = BindingTemplateParser.ParseTemplate("{path}-with-{parameters}"); Assert.Equal(new List <string> { "path", "parameters" }, GetParameterNames(tokens)); }
public void ParseTemplate_IfTripleBrackets_RecognizesParameter() { var tokens = BindingTemplateParser.ParseTemplate("{{{parameter}}}"); Assert.Equal(new List <string> { "{", "parameter", "}" }, GetTokenValues(tokens)); }
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)); }
public void ParseTemplate_IfUnbalancedBraces_ThrowsFormat() { ExceptionAssert.ThrowsFormat( () => BindingTemplateParser.ParseTemplate("}{param}{-path"), "Invalid template '}{param}{-path'. Missing opening bracket at position 1."); }
public void ParseTemplate_IfMalformedParam_ThrowsFormat() { ExceptionAssert.ThrowsFormat( () => BindingTemplateParser.ParseTemplate("{malformed-param}-path"), "Invalid template '{malformed-param}-path'. The parameter name 'malformed-param' is invalid."); }
public void ParseTemplate_IfMissingParam_ThrowsFormat() { ExceptionAssert.ThrowsFormat( () => BindingTemplateParser.ParseTemplate("{}-path"), "Invalid template '{}-path'. The parameter name at position 1 is empty."); }
public void ParseTemplate_IfNull_Throws() { ExceptionAssert.ThrowsArgumentNull( () => BindingTemplateParser.ParseTemplate(null), "input"); }
public void ParseTemplate_IfMissingOpeningBracket_ThrowsFormat() { ExceptionAssert.ThrowsFormat( () => BindingTemplateParser.ParseTemplate("malformed}-path"), "Invalid template 'malformed}-path'. Missing opening bracket at position 10."); }
public void ParseTemplate_IfNestedParam_ThrowsFormat() { ExceptionAssert.ThrowsFormat( () => BindingTemplateParser.ParseTemplate("{a{nested}param}"), "Invalid template '{a{nested}param}'. Missing closing bracket at position 1."); }
public void ParseTemplate_IfPathWithNoParameters_ReturnsLiteralTokensOnly() { var tokens = BindingTemplateParser.ParseTemplate("path-with-no-parameters"); Assert.Empty(tokens.Where(t => t.IsParameter)); }