public void RegexConstraintConstructedWithRegex_SimpleFailedMatch() { // Arrange var constraint = new RegexRouteConstraint(new Regex("^abc$")); var values = new RouteValueDictionary(new { controller = "Abc" }); // Assert Assert.False(EasyMatch(constraint, "controller", values)); }
public void RegexConstraintFailsIfKeyIsNotFoundInRouteValues() { // Arrange var constraint = new RegexRouteConstraint(new Regex("^abc$")); var values = new RouteValueDictionary(new { action = "abc" }); // Assert Assert.False(EasyMatch(constraint, "controller", values)); }
public void RegexConstraint_TakesRegexAsInput_SimpleMatch() { // Arrange var constraint = new RegexRouteConstraint(new Regex("^abc$")); var values = new RouteValueDictionary(new { controller = "abc"}); // Assert Assert.True(EasyMatch(constraint, "controller", values)); }
public void RegexConstraintBuildRegexVerbatimFromInput(string routeValue, string constraintValue, bool shouldMatch) { // Arrange var constraint = new RegexRouteConstraint(constraintValue); var values = new RouteValueDictionary(new {controller = routeValue}); // Assert Assert.Equal(shouldMatch, EasyMatch(constraint, "controller", values)); }
public void RegexConstraintConstructedWithRegex_SimpleFailedMatch() { // Arrange var constraint = new RegexRouteConstraint(new Regex("^abc$")); var values = new RouteValueDictionary(new { controller = "Abc" }); // Act var match = constraint.Match( httpContext: Mock.Of<HttpContext>(), route: new Mock<IRouter>().Object, routeKey: "controller", values: values, routeDirection: RouteDirection.IncomingRequest); // Assert Assert.False(match); }
[InlineData(@"*****@*****.**", @"^\w+[\w\.]*\@\w+((-\w+)|(\w*))\.[a-z]{2,3}$", true)] // email public void RegexConstraintBuildRegexVerbatimFromInput( string routeValue, string constraintValue, bool shouldMatch) { // Arrange var constraint = new RegexRouteConstraint(constraintValue); var values = new RouteValueDictionary(new { controller = routeValue }); // Act var match = constraint.Match( httpContext: Mock.Of<HttpContext>(), route: new Mock<IRouter>().Object, routeKey: "controller", values: values, routeDirection: RouteDirection.IncomingRequest); // Assert Assert.Equal(shouldMatch, match); }
/// <summary> /// Adds a constraint instance for the given key. /// </summary> /// <param name="key">The key.</param> /// <param name="value"> /// The constraint instance. Must either be a string or an instance of <see cref="IRouteConstraint"/>. /// </param> /// <remarks> /// If the <paramref name="value"/> is a string, it will be converted to a <see cref="RegexRouteConstraint"/>. /// /// For example, the string <code>Product[0-9]+</code> will be converted to the regular expression /// <code>^(Product[0-9]+)</code>. See <see cref="System.Text.RegularExpressions.Regex"/> for more details. /// </remarks> public void AddConstraint([NotNull] string key, [NotNull] object value) { var constraint = value as IRouteConstraint; if (constraint == null) { var regexPattern = value as string; if (regexPattern == null) { throw new InvalidOperationException( Resources.FormatRouteConstraintBuilder_ValidationMustBeStringOrCustomConstraint( key, value, _displayName, typeof(IRouteConstraint))); } var constraintsRegEx = "^(" + regexPattern + ")$"; constraint = new RegexRouteConstraint(constraintsRegEx); } Add(key, constraint); }
public void RegexConstraintIsCultureInsensitiveWhenConstructedWithString() { if (TestPlatformHelper.IsMono) { // The Regex in Mono returns true when matching the Turkish I for the a-z range which causes the test // to fail. Tracked via #100. return; } // Arrange var constraint = new RegexRouteConstraint("^([a-z]+)$"); var values = new RouteValueDictionary(new { controller = "\u0130" }); // Turkish upper-case dotted I var currentThread = Thread.CurrentThread; var backupCulture = currentThread.CurrentCulture; bool matchInTurkish; bool matchInUsEnglish; // Act try { currentThread.CurrentCulture = new CultureInfo("tr-TR"); // Turkish culture matchInTurkish = EasyMatch(constraint, "controller", values); currentThread.CurrentCulture = new CultureInfo("en-US"); matchInUsEnglish = EasyMatch(constraint, "controller", values); } finally { currentThread.CurrentCulture = backupCulture; } // Assert Assert.False(matchInUsEnglish); // this just verifies the test Assert.False(matchInTurkish); }
public void RegexConstraintFailsIfKeyIsNotFoundInRouteValues() { // Arrange var constraint = new RegexRouteConstraint(new Regex("^abc$")); var values = new RouteValueDictionary(new { action = "abc" }); // Act var match = constraint.Match( httpContext: Mock.Of<HttpContext>(), route: new Mock<IRouter>().Object, routeKey: "controller", values: values, routeDirection: RouteDirection.IncomingRequest); // Assert Assert.False(match); }
public void RegexConstraintIsCultureInsensitiveWhenConstructedWithString(string culture) { if (TestPlatformHelper.IsMono) { // The Regex in Mono returns true when matching the Turkish I for the a-z range which causes the test // to fail. Tracked via #100. return; } // Arrange var constraint = new RegexRouteConstraint("^([a-z]+)$"); var values = new RouteValueDictionary(new { controller = "\u0130" }); // Turkish upper-case dotted I using (new CultureReplacer(culture)) { // Act var match = constraint.Match( httpContext: new Mock<HttpContext>().Object, route: new Mock<IRouter>().Object, routeKey: "controller", values: values, routeDirection: RouteDirection.IncomingRequest); // Assert Assert.False(match); } }