Should GetVirtualPath returns PathString
This commit is contained in:
parent
fe5b6d67c5
commit
ff209f04bb
|
|
@ -13,7 +13,6 @@ using Microsoft.Framework.Internal;
|
|||
using Microsoft.Framework.Logging;
|
||||
using Microsoft.Framework.OptionsModel;
|
||||
|
||||
|
||||
namespace Microsoft.AspNet.Routing
|
||||
{
|
||||
public class RouteCollection : IRouteCollection
|
||||
|
|
@ -214,18 +213,18 @@ namespace Microsoft.AspNet.Routing
|
|||
}
|
||||
}
|
||||
|
||||
private string NormalizeVirtualPath(String url)
|
||||
private PathString NormalizeVirtualPath(PathString path)
|
||||
{
|
||||
if (string.IsNullOrEmpty(url)) return url;
|
||||
var url = path.Value;
|
||||
|
||||
if (_options.LowercaseUrls)
|
||||
if (!string.IsNullOrEmpty(url) && _options.LowercaseUrls)
|
||||
{
|
||||
var indexOfSeparator = url.IndexOfAny(new char[] { '?', '#' });
|
||||
|
||||
// No query string, lowercase the url
|
||||
if (indexOfSeparator == -1)
|
||||
{
|
||||
return url.ToLowerInvariant();
|
||||
url = url.ToLowerInvariant();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -233,11 +232,13 @@ namespace Microsoft.AspNet.Routing
|
|||
var queryString = url.Substring(indexOfSeparator);
|
||||
|
||||
// queryString will contain the delimiter ? or # as the first character, so it's safe to append.
|
||||
return lowercaseUrl + queryString;
|
||||
url = lowercaseUrl + queryString;
|
||||
}
|
||||
|
||||
return new PathString(url);
|
||||
}
|
||||
|
||||
return url;
|
||||
return path;
|
||||
}
|
||||
|
||||
private void EnsureLogger(HttpContext context)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNet.Http;
|
||||
using Microsoft.Framework.Internal;
|
||||
|
||||
namespace Microsoft.AspNet.Routing
|
||||
|
|
@ -12,7 +14,6 @@ namespace Microsoft.AspNet.Routing
|
|||
/// </summary>
|
||||
public class VirtualPathData
|
||||
{
|
||||
private string _virtualPath;
|
||||
private readonly IDictionary<string, object> _dataToken;
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -34,6 +35,21 @@ namespace Microsoft.AspNet.Routing
|
|||
public VirtualPathData(
|
||||
[NotNull] IRouter router,
|
||||
string virtualPath,
|
||||
IDictionary<string, object> dataTokens)
|
||||
: this(router, CreatePathString(virtualPath), dataTokens)
|
||||
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="VirtualPathData"/> class.
|
||||
/// </summary>
|
||||
/// <param name="router">The object that is used to generate the URL.</param>
|
||||
/// <param name="virtualPath">The generated URL.</param>
|
||||
/// <param name="dataTokens">The collection of custom values.</param>
|
||||
public VirtualPathData(
|
||||
[NotNull] IRouter router,
|
||||
PathString virtualPath,
|
||||
IDictionary<string, object> dataTokens)
|
||||
{
|
||||
Router = router;
|
||||
|
|
@ -65,16 +81,26 @@ namespace Microsoft.AspNet.Routing
|
|||
/// <summary>
|
||||
/// Gets or sets the URL that was generated from the <see cref="Router"/>.
|
||||
/// </summary>
|
||||
public string VirtualPath
|
||||
public PathString VirtualPath { get; set; }
|
||||
|
||||
private static PathString CreatePathString(string path)
|
||||
{
|
||||
get
|
||||
if (!string.IsNullOrEmpty(path))
|
||||
{
|
||||
return _virtualPath ?? string.Empty;
|
||||
}
|
||||
set
|
||||
{
|
||||
_virtualPath = value;
|
||||
PathString pathString;
|
||||
if (path.Length > 0 && !path.StartsWith("/", StringComparison.Ordinal))
|
||||
{
|
||||
pathString = new PathString("/" + path);
|
||||
}
|
||||
else
|
||||
{
|
||||
pathString = new PathString(path);
|
||||
}
|
||||
|
||||
return pathString;
|
||||
}
|
||||
|
||||
return PathString.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -20,12 +20,12 @@ namespace Microsoft.AspNet.Routing
|
|||
public class RouteCollectionTest
|
||||
{
|
||||
[Theory]
|
||||
[InlineData(@"Home/Index/23", "home/index/23", true)]
|
||||
[InlineData(@"Home/Index/23", "Home/Index/23", false)]
|
||||
[InlineData(@"Home/Index/23?Param1=ABC&Param2=Xyz", "Home/Index/23?Param1=ABC&Param2=Xyz", false)]
|
||||
[InlineData(@"Home/Index/23?Param1=ABC&Param2=Xyz", "home/index/23?Param1=ABC&Param2=Xyz", true)]
|
||||
[InlineData(@"Home/Index/23#Param1=ABC&Param2=Xyz", "Home/Index/23#Param1=ABC&Param2=Xyz", false)]
|
||||
[InlineData(@"Home/Index/23#Param1=ABC&Param2=Xyz", "home/index/23#Param1=ABC&Param2=Xyz", true)]
|
||||
[InlineData(@"Home/Index/23", "/home/index/23", true)]
|
||||
[InlineData(@"Home/Index/23", "/Home/Index/23", false)]
|
||||
[InlineData(@"Home/Index/23?Param1=ABC&Param2=Xyz", "/Home/Index/23?Param1=ABC&Param2=Xyz", false)]
|
||||
[InlineData(@"Home/Index/23?Param1=ABC&Param2=Xyz", "/home/index/23?Param1=ABC&Param2=Xyz", true)]
|
||||
[InlineData(@"Home/Index/23#Param1=ABC&Param2=Xyz", "/Home/Index/23#Param1=ABC&Param2=Xyz", false)]
|
||||
[InlineData(@"Home/Index/23#Param1=ABC&Param2=Xyz", "/home/index/23#Param1=ABC&Param2=Xyz", true)]
|
||||
public void GetVirtualPath_CanLowerCaseUrls_BasedOnOptions(
|
||||
string returnUrl,
|
||||
string lowercaseUrl,
|
||||
|
|
@ -45,15 +45,15 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(lowercaseUrl, pathData.VirtualPath);
|
||||
Assert.Equal(new PathString(lowercaseUrl), pathData.VirtualPath);
|
||||
Assert.Same(target.Object, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
||||
|
||||
[Theory]
|
||||
[InlineData(@"\u0130", @"\u0130", true)]
|
||||
[InlineData(@"\u0049", @"\u0049", true)]
|
||||
[InlineData(@"<22>ino", @"<EFBFBD>ino", true)]
|
||||
[InlineData(@"\u0130", @"/\u0130", true)]
|
||||
[InlineData(@"\u0049", @"/\u0049", true)]
|
||||
[InlineData(@"<22>ino", @"/<EFBFBD>ino", true)]
|
||||
public void GetVirtualPath_DoesntLowerCaseUrls_Invariant(
|
||||
string returnUrl,
|
||||
string lowercaseUrl,
|
||||
|
|
@ -73,7 +73,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(lowercaseUrl, pathData.VirtualPath);
|
||||
Assert.Equal(new PathString(lowercaseUrl), pathData.VirtualPath);
|
||||
Assert.Same(target.Object, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -83,7 +83,7 @@ namespace Microsoft.AspNet.Routing
|
|||
public void GetVirtualPath_ReturnsDataTokens(RouteValueDictionary dataTokens, string routerName)
|
||||
{
|
||||
// Arrange
|
||||
var virtualPath = "TestVirtualPath";
|
||||
var virtualPath = new PathString("/TestVirtualPath");
|
||||
|
||||
var pathContextValues = new RouteValueDictionary { { "controller", virtualPath } };
|
||||
|
||||
|
|
@ -114,7 +114,7 @@ namespace Microsoft.AspNet.Routing
|
|||
Assert.Equal(dataToken.Value, pathData.DataTokens[dataToken.Key]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public async Task RouteAsync_LogsCorrectValuesWhenHandled()
|
||||
{
|
||||
|
|
@ -269,8 +269,8 @@ namespace Microsoft.AspNet.Routing
|
|||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(false, "RouteName")]
|
||||
[InlineData(true, "routename")]
|
||||
[InlineData(false, "/RouteName")]
|
||||
[InlineData(true, "/routename")]
|
||||
public void NamedRouteTests_GetNamedRoute_ReturnsValue(bool lowercaseUrls, string expectedUrl)
|
||||
{
|
||||
// Arrange
|
||||
|
|
@ -283,7 +283,7 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(expectedUrl, pathData.VirtualPath);
|
||||
Assert.Equal(new PathString(expectedUrl), pathData.VirtualPath);
|
||||
var namedRouter = Assert.IsAssignableFrom<INamedRouter>(pathData.Router);
|
||||
Assert.Equal(virtualPathContext.RouteName, namedRouter.Name);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
|
@ -302,7 +302,7 @@ namespace Microsoft.AspNet.Routing
|
|||
// Assert
|
||||
Assert.Null(stringVirtualPath);
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void NamedRouteTests_GetNamedRoute_AmbiguousRoutesInCollection_DoesNotThrowForUnambiguousRoute()
|
||||
{
|
||||
|
|
@ -317,12 +317,12 @@ namespace Microsoft.AspNet.Routing
|
|||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("route1", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/route1"), pathData.VirtualPath);
|
||||
var namedRouter = Assert.IsAssignableFrom<INamedRouter>(pathData.Router);
|
||||
Assert.Equal("Route1", namedRouter.Name);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public void NamedRouteTests_GetNamedRoute_AmbiguousRoutesInCollection_ThrowsForAmbiguousRoute()
|
||||
{
|
||||
|
|
@ -390,7 +390,7 @@ namespace Microsoft.AspNet.Routing
|
|||
// Act
|
||||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
Assert.Equal("best", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/best"), pathData.VirtualPath);
|
||||
var namedRouter = Assert.IsAssignableFrom<INamedRouter>(pathData.Router);
|
||||
Assert.Equal("Match", namedRouter.Name);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
|
@ -420,7 +420,7 @@ namespace Microsoft.AspNet.Routing
|
|||
// Act
|
||||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
Assert.Equal("best", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/best"), pathData.VirtualPath);
|
||||
var namedRouter = Assert.IsAssignableFrom<INamedRouter>(pathData.Router);
|
||||
Assert.Equal("Match", namedRouter.Name);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
|
@ -450,7 +450,7 @@ namespace Microsoft.AspNet.Routing
|
|||
// Act
|
||||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
Assert.Equal("best", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/best"), pathData.VirtualPath);
|
||||
var namedRouter = Assert.IsAssignableFrom<INamedRouter>(pathData.Router);
|
||||
Assert.Equal("Match", namedRouter.Name);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
|
@ -479,7 +479,7 @@ namespace Microsoft.AspNet.Routing
|
|||
// Act
|
||||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
Assert.Equal("best", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/best"), pathData.VirtualPath);
|
||||
Assert.Same(route1.Object, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -543,7 +543,7 @@ namespace Microsoft.AspNet.Routing
|
|||
// Act
|
||||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
Assert.Equal("best", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/best"), pathData.VirtualPath);
|
||||
Assert.Same(route2.Object, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -576,7 +576,7 @@ namespace Microsoft.AspNet.Routing
|
|||
// Act
|
||||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
Assert.Equal("best", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/best"), pathData.VirtualPath);
|
||||
Assert.Same(route3.Object, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -609,7 +609,7 @@ namespace Microsoft.AspNet.Routing
|
|||
// Act
|
||||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
Assert.Equal("best", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/best"), pathData.VirtualPath);
|
||||
Assert.Same(route2.Object, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -644,7 +644,7 @@ namespace Microsoft.AspNet.Routing
|
|||
// Act
|
||||
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
|
||||
|
||||
Assert.Equal("best", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/best"), pathData.VirtualPath);
|
||||
Assert.Same(route3.Object, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -663,19 +663,19 @@ namespace Microsoft.AspNet.Routing
|
|||
yield return new object[] {
|
||||
"{controller}/{action}",
|
||||
new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" } },
|
||||
"home/index",
|
||||
"/home/index",
|
||||
true };
|
||||
|
||||
yield return new object[] {
|
||||
"{controller}/{action}/",
|
||||
new RouteValueDictionary { { "controller", "Home" }, { "action", "Index" } },
|
||||
"Home/Index",
|
||||
"/Home/Index",
|
||||
false };
|
||||
|
||||
yield return new object[] {
|
||||
"api/{action}/",
|
||||
new RouteValueDictionary { { "action", "Create" } },
|
||||
"api/create",
|
||||
"/api/create",
|
||||
true };
|
||||
|
||||
yield return new object[] {
|
||||
|
|
@ -685,7 +685,7 @@ namespace Microsoft.AspNet.Routing
|
|||
{ "id", "23" },
|
||||
{ "Param1", "Value1" },
|
||||
{ "Param2", "Value2" } },
|
||||
"api/create/23?Param1=Value1&Param2=Value2",
|
||||
"/api/create/23?Param1=Value1&Param2=Value2",
|
||||
true };
|
||||
|
||||
yield return new object[] {
|
||||
|
|
@ -695,7 +695,7 @@ namespace Microsoft.AspNet.Routing
|
|||
{ "id", "23" },
|
||||
{ "Param1", "Value1" },
|
||||
{ "Param2", "Value2" } },
|
||||
"api/Create/23?Param1=Value1&Param2=Value2",
|
||||
"/api/Create/23?Param1=Value1&Param2=Value2",
|
||||
false };
|
||||
}
|
||||
}
|
||||
|
|
@ -720,7 +720,7 @@ namespace Microsoft.AspNet.Routing
|
|||
|
||||
// Assert
|
||||
Assert.True(context.IsBound);
|
||||
Assert.Equal(expectedUrl, pathData.VirtualPath);
|
||||
Assert.Equal(new PathString(expectedUrl), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -953,7 +953,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
|
||||
// Assert
|
||||
Assert.True(context.IsBound);
|
||||
Assert.Equal("Home", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -979,7 +979,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
RouteValueDictionary dataTokens)
|
||||
{
|
||||
// Arrange
|
||||
var path = "TestPath";
|
||||
var path = new PathString("/TestPath");
|
||||
|
||||
var target = new Mock<IRouter>(MockBehavior.Strict);
|
||||
target
|
||||
|
|
@ -1024,7 +1024,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
RouteValueDictionary dataTokens)
|
||||
{
|
||||
// Arrange
|
||||
var path = "TestPath";
|
||||
var path = new PathString("/TestPath");
|
||||
|
||||
var target = new Mock<IRouter>(MockBehavior.Strict);
|
||||
target
|
||||
|
|
@ -1070,7 +1070,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
|
||||
// Assert
|
||||
Assert.False(context.IsBound);
|
||||
Assert.Equal("Home", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1087,7 +1087,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
|
||||
// Assert
|
||||
Assert.True(context.IsBound);
|
||||
Assert.Equal("Home/Index", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1130,7 +1130,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
// Assert
|
||||
Assert.True(context.IsBound);
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal("hello/1234", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/hello/1234"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1173,7 +1173,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
// Assert
|
||||
Assert.True(context.IsBound);
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal("hello/1234", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/hello/1234"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1205,7 +1205,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
// Assert
|
||||
Assert.True(context.IsBound);
|
||||
Assert.NotNull(pathData);
|
||||
Assert.Equal("hello/1234", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/hello/1234"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -1234,7 +1234,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Store", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Store"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -1263,7 +1263,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Admin/Home/Store", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Admin/Home/Store"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -1291,7 +1291,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Store?id=5", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Store?id=5"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -1322,7 +1322,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("slug/Home/Store", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/slug/Home/Store"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -1353,7 +1353,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("slug/Home/Store", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/slug/Home/Store"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -1383,7 +1383,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("slug/Shopping", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/slug/Shopping"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -1414,7 +1414,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("slug/Home/Store", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/slug/Home/Store"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
|
||||
|
|
@ -1433,7 +1433,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index/4", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index/4"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1465,7 +1465,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index/98", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index/98"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1482,7 +1482,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1514,7 +1514,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index/14", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index/14"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1537,7 +1537,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index/products", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index/products"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1559,7 +1559,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index/products.xml", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index/products.xml"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1581,7 +1581,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index/products", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index/products"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1603,7 +1603,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index/products.xml", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index/products.xml"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1625,7 +1625,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index/products", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index/products"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1647,7 +1647,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index/products?format=json", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index/products?format=json"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1669,7 +1669,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index/.products", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index/.products"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1691,7 +1691,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index/", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index/"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -1713,7 +1713,7 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
var pathData = route.GetVirtualPath(context);
|
||||
|
||||
// Assert
|
||||
Assert.Equal("Home/Index", pathData.VirtualPath);
|
||||
Assert.Equal(new PathString("/Home/Index"), pathData.VirtualPath);
|
||||
Assert.Same(route, pathData.Router);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -2030,4 +2030,4 @@ namespace Microsoft.AspNet.Routing.Template
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
#if DNX451
|
||||
using Microsoft.AspNet.Http;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
|
|
@ -14,14 +15,14 @@ namespace Microsoft.AspNet.Routing
|
|||
{
|
||||
// Arrange
|
||||
var router = new Mock<IRouter>().Object;
|
||||
var path = "virtual path";
|
||||
var path = new PathString("/virtual path");
|
||||
|
||||
// Act
|
||||
var pathData = new VirtualPathData(router, path, null);
|
||||
|
||||
// Assert
|
||||
Assert.Same(router, pathData.Router);
|
||||
Assert.Same(path, pathData.VirtualPath);
|
||||
Assert.Equal(path, pathData.VirtualPath);
|
||||
Assert.NotNull(pathData.DataTokens);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
@ -31,7 +32,7 @@ namespace Microsoft.AspNet.Routing
|
|||
{
|
||||
// Arrange
|
||||
var router = new Mock<IRouter>().Object;
|
||||
var path = "virtual path";
|
||||
var path = new PathString("/virtual path");
|
||||
var dataTokens = new RouteValueDictionary();
|
||||
dataTokens["TestKey"] = "TestValue";
|
||||
|
||||
|
|
@ -40,7 +41,7 @@ namespace Microsoft.AspNet.Routing
|
|||
|
||||
// Assert
|
||||
Assert.Same(router, pathData.Router);
|
||||
Assert.Same(path, pathData.VirtualPath);
|
||||
Assert.Equal(path, pathData.VirtualPath);
|
||||
Assert.NotNull(pathData.DataTokens);
|
||||
Assert.Equal("TestValue", pathData.DataTokens["TestKey"]);
|
||||
Assert.Equal(1, pathData.DataTokens.Count);
|
||||
|
|
@ -58,7 +59,7 @@ namespace Microsoft.AspNet.Routing
|
|||
|
||||
// Assert
|
||||
Assert.Same(router, pathData.Router);
|
||||
Assert.Equal(string.Empty, pathData.VirtualPath);
|
||||
Assert.Equal(new PathString(string.Empty), pathData.VirtualPath);
|
||||
Assert.NotNull(pathData.DataTokens);
|
||||
Assert.Empty(pathData.DataTokens);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue