public void RouteGeneratorReturnsNullWhenNotAllParametersFilledIn()
        {
            var route = new RegexRoute(@"(?<Controller>[a-zA-Z]+)(_(?<Action>[a-zA-Z]+))?(_?<Id>\d+)?",
                                       "{Controller}_{Action}_{Id}", handler);
            RouteData       routeData = route.GetRouteData("Products_View_0");
            VirtualPathData pathData  = route.GetVirtualPath(new RequestContext(mr.PartialMock <HttpContextBase>(), routeData),
                                                             new RouteValueDictionary(
                                                                 new { Controller = "Accounts", Action = "Delete" }));

            Assert.IsNull(pathData);
        }
        public void RouteGeneratorGeneratesValidRouteWithoutDefaults()
        {
            var route = new RegexRoute(@"(?<Controller>[a-zA-Z]+)(_(?<Action>[a-zA-Z]+))?(_?<Id>\d+)?",
                                       "{Controller}_{Action}_{Id}", handler);
            RouteData       routeData = route.GetRouteData("Products_View_0");
            VirtualPathData pathData  = route.GetVirtualPath(new RequestContext(mr.PartialMock <HttpContextBase>(), routeData),
                                                             new RouteValueDictionary(
                                                                 new { Controller = "Accounts", Action = "Delete", Id = 0 }));

            Assert.AreEqual("Accounts_Delete_0", pathData.VirtualPath);
        }
        public void RouteGeneratorCallsCustomFunctionIfProvided()
        {
            bool                 called           = false;
            RequestContext       innerContext     = null;
            RouteValueDictionary innerRouteValues = null;
            RegexRoute           innerRoute       = null;
            VirtualPathData      innerPathData    = null;
            var route = new RegexRoute(
                @"(?<Controller>[a-zA-Z]+)(_(?<Action>[a-zA-Z]+))?(_?<Id>\d+)?",
                delegate(RequestContext context, RouteValueDictionary routeValues, RegexRoute thisRoute)
            {
                called           = true;
                innerContext     = context;
                innerRouteValues = routeValues;
                innerRoute       = thisRoute;
                innerPathData    = new VirtualPathData(thisRoute, "");
                return(innerPathData);
            },
                handler);
            RouteData       routeData      = route.GetRouteData("Products_View_0");
            var             values         = new RouteValueDictionary(new { Controller = "Accounts", Action = "Delete", Id = 0 });
            var             requestContext = new RequestContext(mr.PartialMock <HttpContextBase>(), routeData);
            VirtualPathData pathData       = route.GetVirtualPath(
                requestContext,
                values);

            Assert.IsTrue(called);
            Assert.IsNotNull(innerContext);
            Assert.AreSame(requestContext, innerContext);
            Assert.IsNotNull(innerRouteValues);
            Assert.AreSame(values, innerRouteValues);
            Assert.IsNotNull(innerRoute);
            Assert.AreSame(route, innerRoute);
            Assert.IsNotNull(pathData);
            Assert.AreSame(pathData, innerPathData);
        }