Should GetVirtualPath returns PathString

This commit is contained in:
ianhong 2015-03-20 16:43:37 -07:00
parent fe5b6d67c5
commit ff209f04bb
5 changed files with 111 additions and 83 deletions

View File

@ -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)

View File

@ -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;
}
}
}

View File

@ -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);
}

View File

@ -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

View File

@ -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);
}