public void BuildHttpRoute_ChainedConstraints() { IHttpRoute route = BuildRoute(@"hello/{param:regex(\d+):regex(\w+)}"); Assert.Equal("hello/{param}", route.RouteTemplate); Assert.IsType <CompoundHttpRouteConstraint>(route.Constraints["param"]); CompoundHttpRouteConstraint constraint = (CompoundHttpRouteConstraint)route.Constraints["param"]; Assert.Equal(@"\d+", ((RegexHttpRouteConstraint)constraint.Constraints.ElementAt(0)).Pattern); Assert.Equal(@"\w+", ((RegexHttpRouteConstraint)constraint.Constraints.ElementAt(1)).Pattern); }
public void BuildHttpRoute_ConstraintsDefaultsAndOptionalsInMultipleSections() { IHttpRoute route = BuildRoute(@"some/url-{p1:alpha:length(3)=hello}/{p2=abc}/{p3?}"); Assert.Equal("some/url-{p1}/{p2}/{p3}", route.RouteTemplate); Assert.Equal("hello", route.Defaults["p1"]); Assert.Equal("abc", route.Defaults["p2"]); Assert.Equal(RouteParameter.Optional, route.Defaults["p3"]); Assert.IsType <CompoundHttpRouteConstraint>(route.Constraints["p1"]); CompoundHttpRouteConstraint constraint = (CompoundHttpRouteConstraint)route.Constraints["p1"]; Assert.IsType <AlphaHttpRouteConstraint>(constraint.Constraints.ElementAt(0)); Assert.IsType <LengthHttpRouteConstraint>(constraint.Constraints.ElementAt(1)); }