public void RegexInlineConstraint_IsCultureInsensitive(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 RegexInlineRouteConstraint("^([a-z]+)$");
        var values     = new RouteValueDictionary(new { controller = "\u0130" }); // Turkish upper-case dotted I

        using (new CultureReplacer(culture))
        {
            // Act
            var match = constraint.Match(
                new DefaultHttpContext(),
                route: new Mock <IRouter>().Object,
                routeKey: "controller",
                values: values,
                routeDirection: RouteDirection.IncomingRequest);

            // Assert
            Assert.False(match);
        }
    }
Example #2
0
        public void RegexInlineConstraint_FailsIfKeyIsNotFoundInRouteValues()
        {
            // Arrange
            var constraint = new RegexInlineRouteConstraint("^abc$");
            var values     = new RouteValueDictionary(new { action = "abc" });

            // Assert
            Assert.False(EasyMatch(constraint, "controller", values));
        }
Example #3
0
        [InlineData("Abc", " abc", false)]  // Missing char
        public void RegexInlineConstraintBuildRegexVerbatimFromInput(string routeValue,
                                                                     string constraintValue,
                                                                     bool shouldMatch)
        {
            // Arrange
            var constraint = new RegexInlineRouteConstraint(constraintValue);
            var values     = new RouteValueDictionary(new { controller = routeValue });

            // Assert
            Assert.Equal(shouldMatch, EasyMatch(constraint, "controller", values));
        }
    public void RegexInlineConstraint_FailsIfKeyIsNotFoundInRouteValues()
    {
        // Arrange
        var constraint = new RegexInlineRouteConstraint("^abc$");
        var values     = new RouteValueDictionary(new { action = "abc" });

        // Act
        var match = constraint.Match(
            new DefaultHttpContext(),
            route: new Mock <IRouter>().Object,
            routeKey: "controller",
            values: values,
            routeDirection: RouteDirection.IncomingRequest);

        // Assert
        Assert.False(match);
    }
    [InlineData("Abc", " abc", false)]  // Missing char
    public void RegexInlineConstraintBuildRegexVerbatimFromInput(
        string routeValue,
        string constraintValue,
        bool shouldMatch)
    {
        // Arrange
        var constraint = new RegexInlineRouteConstraint(constraintValue);
        var values     = new RouteValueDictionary(new { controller = routeValue });

        // Act
        var match = constraint.Match(
            new DefaultHttpContext(),
            route: new Mock <IRouter>().Object,
            routeKey: "controller",
            values: values,
            routeDirection: RouteDirection.IncomingRequest);

        // Assert
        Assert.Equal(shouldMatch, match);
    }
Example #6
0
        public void RegexInlineConstraint_IsCultureInsensitive()
        {
            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 RegexInlineRouteConstraint("^([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);
        }