public void Parse_OptionalParameter() { // Arrange var template = "{p?}"; var builder = RoutePatternBuilder.Create(template); builder.AddPathSegmentFromText("{p?}", RoutePatternPart.CreateParameterFromText("{p?}", "p", null, RoutePatternParameterKind.Optional)); var expected = builder.Build(); // Act var actual = RoutePatternParser.Parse(template); // Assert Assert.Equal <RoutePattern>(expected, actual, new RoutePatternEqualityComparer()); }
public void Parse_MultipleParameters() { // Arrange var template = "{p1}/{p2}/{*p3}"; var builder = RoutePatternBuilder.Create(template); builder.AddPathSegmentFromText("{p1}", RoutePatternPart.CreateParameterFromText("{p1}", "p1")); builder.AddPathSegmentFromText("{p2}", RoutePatternPart.CreateParameterFromText("{p2}", "p2")); builder.AddPathSegmentFromText("{*p3}", RoutePatternPart.CreateParameterFromText("{*p3}", "p3", null, RoutePatternParameterKind.CatchAll)); var expected = builder.Build(); // Act var actual = RoutePatternParser.Parse(template); // Assert Assert.Equal <RoutePattern>(expected, actual, new RoutePatternEqualityComparer()); }
public void Parse_ComplexSegment_OptionalParameterFollowingPeriod_PeriodAfterSlash() { // Arrange var template = "{p2}/.{p3?}"; var builder = RoutePatternBuilder.Create(template); builder.AddPathSegmentFromText("{p2}", RoutePatternPart.CreateParameterFromText("{p2}", "p2")); builder.AddPathSegmentFromText(".{p3?}", RoutePatternPart.CreateSeparatorFromText(".", "."), RoutePatternPart.CreateParameterFromText("{p3?}", "p3", null, RoutePatternParameterKind.Optional)); var expected = builder.Build(); // Act var actual = RoutePatternParser.Parse(template); // Assert Assert.Equal <RoutePattern>(expected, actual, new RoutePatternEqualityComparer()); }
public void Parse_ComplexSegment_PL() { // Arrange var template = "{p1}-cool"; var builder = RoutePatternBuilder.Create(template); builder.AddPathSegmentFromText( "{p1}-cool", RoutePatternPart.CreateParameterFromText("{p1}", "p1"), RoutePatternPart.CreateLiteralFromText("-cool", "-cool")); var expected = builder.Build(); // Act var actual = RoutePatternParser.Parse(template); // Assert Assert.Equal <RoutePattern>(expected, actual, new RoutePatternEqualityComparer()); }
[InlineData(@"{p1:regex(([{{(])\w+)}", @"regex(([{(])\w+)")] // Not balanced { public void Parse_RegularExpressions(string template, string constraint) { // Arrange var builder = RoutePatternBuilder.Create(template); builder.AddPathSegmentFromText( template, RoutePatternPart.CreateParameterFromText( template, "p1", null, RoutePatternParameterKind.Standard, ConstraintReference.CreateFromText(constraint, constraint))); var expected = builder.Build(); // Act var actual = RoutePatternParser.Parse(template); // Assert Assert.Equal <RoutePattern>(expected, actual, new RoutePatternEqualityComparer()); }
public void Parse_ComplexSegment_ThreeParametersSeperatedByPeriod() { // Arrange var template = "{p1}.{p2}.{p3}"; var builder = RoutePatternBuilder.Create(template); builder.AddPathSegmentFromText( "{p1}.{p2}.{p3}", RoutePatternPart.CreateParameterFromText("{p1}", "p1"), RoutePatternPart.CreateLiteralFromText(".", "."), RoutePatternPart.CreateParameterFromText("{p2}", "p2"), RoutePatternPart.CreateLiteralFromText(".", "."), RoutePatternPart.CreateParameterFromText("{p3}", "p3")); var expected = builder.Build(); // Act var actual = RoutePatternParser.Parse(template); // Assert Assert.Equal <RoutePattern>(expected, actual, new RoutePatternEqualityComparer()); }