Change the data type of VirtualPathData.VirtualPath

Fixes #270
This commit is contained in:
Pranav K 2016-01-04 12:25:01 -08:00
parent 226cfb1e0d
commit 739dc7d621
8 changed files with 166 additions and 163 deletions

View File

@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.AspNet.Http;
namespace Microsoft.AspNet.Routing
{
@ -13,6 +12,7 @@ namespace Microsoft.AspNet.Routing
public class VirtualPathData
{
private RouteValueDictionary _dataTokens;
private string _virtualPath;
/// <summary>
/// Initializes a new instance of the <see cref="VirtualPathData"/> class.
@ -34,20 +34,6 @@ namespace Microsoft.AspNet.Routing
IRouter router,
string virtualPath,
RouteValueDictionary 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(
IRouter router,
PathString virtualPath,
RouteValueDictionary dataTokens)
{
if (router == null)
{
@ -83,26 +69,31 @@ namespace Microsoft.AspNet.Routing
/// <summary>
/// Gets or sets the URL that was generated from the <see cref="Router"/>.
/// </summary>
public PathString VirtualPath { get; set; }
private static PathString CreatePathString(string path)
public string VirtualPath
{
if (!string.IsNullOrEmpty(path))
get
{
PathString pathString;
if (path.Length > 0 && !path.StartsWith("/", StringComparison.Ordinal))
{
pathString = new PathString("/" + path);
}
else
{
pathString = new PathString(path);
}
return _virtualPath;
}
set
{
_virtualPath = NormalizePath(value);
}
}
return pathString;
private static string NormalizePath(string path)
{
if (string.IsNullOrEmpty(path))
{
return string.Empty;
}
return PathString.Empty;
if (!path.StartsWith("/", StringComparison.Ordinal))
{
return "/" + path;
}
return path;
}
}
}

View File

@ -188,6 +188,12 @@ namespace Microsoft.AspNet.Routing.Internal
public override string ToString()
{
// We can ignore any currently buffered segments - they are are guaranteed to be 'defaults'.
if (_uri.Length > 0 && _uri[0] != '/')
{
// Normalize generated paths so that they always contain a leading slash.
_uri.Insert(0, '/');
}
return _uri.ToString();
}

View File

@ -137,7 +137,7 @@ namespace Microsoft.AspNet.Routing
return pathData;
}
var url = pathData.VirtualPath.Value;
var url = pathData.VirtualPath;
if (!string.IsNullOrEmpty(url) && (_options.LowercaseUrls || _options.AppendTrailingSlash))
{

View File

@ -1,7 +1,6 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNet.Http;
using Moq;
using Xunit;
@ -13,8 +12,8 @@ namespace Microsoft.AspNet.Routing
public void Constructor_CreatesEmptyDataTokensIfNull()
{
// Arrange
var router = new Mock<IRouter>().Object;
var path = new PathString("/virtual path");
var router = Mock.Of<IRouter>();
var path = "/virtual path";
// Act
var pathData = new VirtualPathData(router, path, null);
@ -30,8 +29,8 @@ namespace Microsoft.AspNet.Routing
public void Constructor_CopiesDataTokens()
{
// Arrange
var router = new Mock<IRouter>().Object;
var path = new PathString("/virtual path");
var router = Mock.Of<IRouter>();
var path = "/virtual path";
var dataTokens = new RouteValueDictionary();
dataTokens["TestKey"] = "TestValue";
@ -51,14 +50,14 @@ namespace Microsoft.AspNet.Routing
public void VirtualPath_ReturnsEmptyStringIfNull()
{
// Arrange
var router = new Mock<IRouter>().Object;
var router = Mock.Of<IRouter>();
// Act
var pathData = new VirtualPathData(router, virtualPath: null);
// Assert
Assert.Same(router, pathData.Router);
Assert.Equal(new PathString(string.Empty), pathData.VirtualPath);
Assert.Empty(pathData.VirtualPath);
Assert.NotNull(pathData.DataTokens);
Assert.Empty(pathData.DataTokens);
}

View File

@ -4,7 +4,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Encodings.Web;
using System.Threading.Tasks;
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Http.Internal;
@ -56,7 +55,7 @@ namespace Microsoft.AspNet.Routing
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
// Assert
Assert.Equal(new PathString(expectedUrl), pathData.VirtualPath);
Assert.Equal(expectedUrl, pathData.VirtualPath);
Assert.Same(target.Object, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -84,7 +83,7 @@ namespace Microsoft.AspNet.Routing
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
// Assert
Assert.Equal(new PathString(lowercaseUrl), pathData.VirtualPath);
Assert.Equal(lowercaseUrl, pathData.VirtualPath);
Assert.Same(target.Object, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -94,7 +93,7 @@ namespace Microsoft.AspNet.Routing
public void GetVirtualPath_ReturnsDataTokens(RouteValueDictionary dataTokens, string routerName)
{
// Arrange
var virtualPath = new PathString("/TestVirtualPath");
var virtualPath = "/TestVirtualPath";
var pathContextValues = new RouteValueDictionary { { "controller", virtualPath } };
@ -217,7 +216,7 @@ namespace Microsoft.AspNet.Routing
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
// Assert
Assert.Equal(new PathString(expectedUrl), pathData.VirtualPath);
Assert.Equal(expectedUrl, pathData.VirtualPath);
var namedRouter = Assert.IsAssignableFrom<INamedRouter>(pathData.Router);
Assert.Equal(virtualPathContext.RouteName, namedRouter.Name);
Assert.Empty(pathData.DataTokens);
@ -251,7 +250,7 @@ namespace Microsoft.AspNet.Routing
var pathData = routeCollection.GetVirtualPath(virtualPathContext);
// Assert
Assert.Equal(new PathString("/route1"), pathData.VirtualPath);
Assert.Equal("/route1", pathData.VirtualPath);
var namedRouter = Assert.IsAssignableFrom<INamedRouter>(pathData.Router);
Assert.Equal("Route1", namedRouter.Name);
Assert.Empty(pathData.DataTokens);
@ -359,7 +358,7 @@ namespace Microsoft.AspNet.Routing
var pathData = routeCollection.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString(expectedUrl), pathData.VirtualPath);
Assert.Equal(expectedUrl, pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -583,7 +582,7 @@ namespace Microsoft.AspNet.Routing
}
var request = new Mock<HttpRequest>(MockBehavior.Strict);
request.SetupGet(r => r.Path).Returns(new PathString(requestPath));
request.SetupGet(r => r.Path).Returns(requestPath);
var optionsAccessor = new Mock<IOptions<RouteOptions>>(MockBehavior.Strict);
optionsAccessor.SetupGet(o => o.Value).Returns(options);

View File

@ -374,8 +374,6 @@ namespace Microsoft.AspNet.Routing
Assert.Null(context.Handler);
}
#region Route Matching
// PathString in HttpAbstractions guarantees a leading slash - so no value in testing other cases.
[Fact]
public async Task Match_Success_LeadingSlash()
@ -587,7 +585,7 @@ namespace Microsoft.AspNet.Routing
}
var request = new Mock<HttpRequest>(MockBehavior.Strict);
request.SetupGet(r => r.Path).Returns(new PathString(requestPath));
request.SetupGet(r => r.Path).Returns(requestPath);
var context = new Mock<HttpContext>(MockBehavior.Strict);
context.Setup(m => m.RequestServices.GetService(typeof(ILoggerFactory)))
@ -596,9 +594,6 @@ namespace Microsoft.AspNet.Routing
return new RouteContext(context.Object);
}
#endregion
#region Route Binding
[Fact]
public void GetVirtualPath_Success()
@ -611,7 +606,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home"), pathData.VirtualPath);
Assert.Equal("/Home", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -630,6 +625,24 @@ namespace Microsoft.AspNet.Routing
Assert.Null(path);
}
[Fact]
public void GetVirtualPath_EncodesValues()
{
// Arrange
var route = CreateRoute("{controller}/{action}");
var context = CreateVirtualPathContext(
new { name = "name with %special #characters" },
new { controller = "Home", action = "Index" });
// Act
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal("/Home/Index?name=name%20with%20%25special%20%23characters", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
[Fact]
public void GetVirtualPath_ForListOfStrings()
{
@ -643,7 +656,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index?color=red&color=green&color=blue"), pathData.VirtualPath);
Assert.Equal("/Home/Index?color=red&color=green&color=blue", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -661,7 +674,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index?items=10&items=20&items=30"), pathData.VirtualPath);
Assert.Equal("/Home/Index?items=10&items=20&items=30", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -679,7 +692,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index"), pathData.VirtualPath);
Assert.Equal("/Home/Index", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -697,7 +710,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index?page=1&color=red&color=green&color=blue&message=textfortest"), pathData.VirtualPath);
Assert.Equal("/Home/Index?page=1&color=red&color=green&color=blue&message=textfortest", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -708,7 +721,7 @@ namespace Microsoft.AspNet.Routing
RouteValueDictionary dataTokens)
{
// Arrange
var path = new PathString("/TestPath");
var path = "/TestPath";
var target = new Mock<IRouter>(MockBehavior.Strict);
target
@ -752,7 +765,7 @@ namespace Microsoft.AspNet.Routing
RouteValueDictionary dataTokens)
{
// Arrange
var path = new PathString("/TestPath");
var path = "/TestPath";
var target = new Mock<IRouter>(MockBehavior.Strict);
target
@ -796,7 +809,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home"), pathData.VirtualPath);
Assert.Equal("/Home", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -812,7 +825,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index"), pathData.VirtualPath);
Assert.Equal("/Home/Index", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -853,7 +866,7 @@ namespace Microsoft.AspNet.Routing
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/hello/1234"), pathData.VirtualPath);
Assert.Equal("/hello/1234", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -894,7 +907,7 @@ namespace Microsoft.AspNet.Routing
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/hello/1234"), pathData.VirtualPath);
Assert.Equal("/hello/1234", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -928,7 +941,7 @@ namespace Microsoft.AspNet.Routing
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/hello/1234"), pathData.VirtualPath);
Assert.Equal("/hello/1234", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
@ -959,7 +972,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/slug/Home/Store"), pathData.VirtualPath);
Assert.Equal("/slug/Home/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
@ -990,7 +1003,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/slug/Home/Store"), pathData.VirtualPath);
Assert.Equal("/slug/Home/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
@ -1020,7 +1033,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/slug/Shopping"), pathData.VirtualPath);
Assert.Equal("/slug/Shopping", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
@ -1051,7 +1064,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/slug/Home/Store"), pathData.VirtualPath);
Assert.Equal("/slug/Home/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
@ -1070,7 +1083,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index/4"), pathData.VirtualPath);
Assert.Equal("/Home/Index/4", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1102,7 +1115,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index/98"), pathData.VirtualPath);
Assert.Equal("/Home/Index/98", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1119,7 +1132,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index"), pathData.VirtualPath);
Assert.Equal("/Home/Index", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1151,7 +1164,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index/14"), pathData.VirtualPath);
Assert.Equal("/Home/Index/14", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1174,7 +1187,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index/products"), pathData.VirtualPath);
Assert.Equal("/Home/Index/products", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1196,7 +1209,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index/products.xml"), pathData.VirtualPath);
Assert.Equal("/Home/Index/products.xml", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1218,7 +1231,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index/products"), pathData.VirtualPath);
Assert.Equal("/Home/Index/products", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1240,7 +1253,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index/products.xml"), pathData.VirtualPath);
Assert.Equal("/Home/Index/products.xml", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1262,7 +1275,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index/products"), pathData.VirtualPath);
Assert.Equal("/Home/Index/products", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1284,7 +1297,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index/products?format=json"), pathData.VirtualPath);
Assert.Equal("/Home/Index/products?format=json", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1306,7 +1319,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index/.products"), pathData.VirtualPath);
Assert.Equal("/Home/Index/.products", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1328,7 +1341,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index/"), pathData.VirtualPath);
Assert.Equal("/Home/Index/", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1350,7 +1363,7 @@ namespace Microsoft.AspNet.Routing
var pathData = route.GetVirtualPath(context);
// Assert
Assert.Equal(new PathString("/Home/Index"), pathData.VirtualPath);
Assert.Equal("/Home/Index", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1386,10 +1399,6 @@ namespace Microsoft.AspNet.Routing
return new VirtualPathContext(null, null, null, routeName);
}
#endregion
#region Route Registration
public static IEnumerable<object[]> DataTokens
{
get
@ -1554,8 +1563,6 @@ namespace Microsoft.AspNet.Routing
Assert.Equal("RouteName", name);
}
#endregion
// DataTokens test data for TemplateRoute.GetVirtualPath
public static IEnumerable<object[]> DataTokensTestData
{

View File

@ -31,7 +31,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
"Test/{val1}/{val2}",
new RouteValueDictionary(new {val1 = "", val2 = ""}),
new RouteValueDictionary(new {val1 = "a"}),
"UrlEncode[[Test]]/UrlEncode[[a]]"
"/UrlEncode[[Test]]/UrlEncode[[a]]"
},
{
"Test/{val1}/{val2}/{val3}",
@ -43,67 +43,67 @@ namespace Microsoft.AspNet.Routing.Template.Tests
"Test/{val1}/{val2}",
new RouteValueDictionary(new {val1 = "", val2 = ""}),
new RouteValueDictionary(new {val1 = "a", val2 = "b"}),
"UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]"
"/UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]"
},
{
"Test/{val1}/{val2}/{val3}",
new RouteValueDictionary(new {val1 = "", val2 = "", val3 = ""}),
new RouteValueDictionary(new {val1 = "a", val2 = "b", val3 = "c"}),
"UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]/UrlEncode[[c]]"
"/UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]/UrlEncode[[c]]"
},
{
"Test/{val1}/{val2}/{val3}",
new RouteValueDictionary(new {val1 = "", val2 = "", val3 = ""}),
new RouteValueDictionary(new {val1 = "a", val2 = "b"}),
"UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]"
"/UrlEncode[[Test]]/UrlEncode[[a]]/UrlEncode[[b]]"
},
{
"Test/{val1}/{val2}/{val3}",
new RouteValueDictionary(new {val1 = "", val2 = "", val3 = ""}),
new RouteValueDictionary(new {val1 = "a"}),
"UrlEncode[[Test]]/UrlEncode[[a]]"
"/UrlEncode[[Test]]/UrlEncode[[a]]"
},
{
"Test/{val1}",
new RouteValueDictionary(new {val1 = "42", val2 = "", val3 = ""}),
new RouteValueDictionary(),
"UrlEncode[[Test]]"
"/UrlEncode[[Test]]"
},
{
"Test/{val1}/{val2}/{val3}",
new RouteValueDictionary(new {val1 = "42", val2 = (string)null, val3 = (string)null}),
new RouteValueDictionary(),
"UrlEncode[[Test]]"
"/UrlEncode[[Test]]"
},
{
"Test/{val1}/{val2}/{val3}/{val4}",
new RouteValueDictionary(new {val1 = "21", val2 = "", val3 = "", val4 = ""}),
new RouteValueDictionary(new {val1 = "42", val2 = "11", val3 = "", val4 = ""}),
"UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
"/UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
},
{
"Test/{val1}/{val2}/{val3}",
new RouteValueDictionary(new {val1 = "21", val2 = "", val3 = ""}),
new RouteValueDictionary(new {val1 = "42"}),
"UrlEncode[[Test]]/UrlEncode[[42]]"
"/UrlEncode[[Test]]/UrlEncode[[42]]"
},
{
"Test/{val1}/{val2}/{val3}/{val4}",
new RouteValueDictionary(new {val1 = "21", val2 = "", val3 = "", val4 = ""}),
new RouteValueDictionary(new {val1 = "42", val2 = "11"}),
"UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
"/UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
},
{
"Test/{val1}/{val2}/{val3}",
new RouteValueDictionary(new {val1 = "21", val2 = (string)null, val3 = (string)null}),
new RouteValueDictionary(new {val1 = "42"}),
"UrlEncode[[Test]]/UrlEncode[[42]]"
"/UrlEncode[[Test]]/UrlEncode[[42]]"
},
{
"Test/{val1}/{val2}/{val3}/{val4}",
new RouteValueDictionary(new {val1 = "21", val2 = (string)null, val3 = (string)null, val4 = (string)null}),
new RouteValueDictionary(new {val1 = "42", val2 = "11"}),
"UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
"/UrlEncode[[Test]]/UrlEncode[[42]]/UrlEncode[[11]]"
},
};
@ -157,7 +157,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
null,
new RouteValueDictionary(new { lang = "en", region = "US" }),
new RouteValueDictionary(new { lang = "xx", region = "yy" }),
"UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]");
"/UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]");
}
[Fact]
@ -168,7 +168,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
null,
new RouteValueDictionary(new { lang = "en", region = "US" }),
new RouteValueDictionary(new { lang = "xx", region = "yy" }),
"UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]UrlEncode[[a]]");
"/UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]UrlEncode[[a]]");
}
[Fact]
@ -179,7 +179,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
null,
new RouteValueDictionary(new { lang = "en", region = "US" }),
new RouteValueDictionary(new { lang = "xx", region = "yy" }),
"UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]");
"/UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]");
}
public static TheoryData OptionalParamValues =>
@ -193,42 +193,42 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2"}),
new RouteValueDictionary(new {val3 = "someval3"}),
new RouteValueDictionary(new {val3 = "someval3"}),
"UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3]]"
"/UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3]]"
},
{
"Test/{val1}/{val2}.{val3?}",
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2"}),
new RouteValueDictionary(new {val3 = "someval3a"}),
new RouteValueDictionary(new {val3 = "someval3v"}),
"UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3v]]"
"/UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3v]]"
},
{
"Test/{val1}/{val2}.{val3?}",
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2"}),
new RouteValueDictionary(new {val3 = "someval3a"}),
new RouteValueDictionary(),
"UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3a]]"
"/UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3a]]"
},
{
"Test/{val1}/{val2}.{val3?}",
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2"}),
new RouteValueDictionary(),
new RouteValueDictionary(new {val3 = "someval3v"}),
"UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3v]]"
"/UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]UrlEncode[[.]]UrlEncode[[someval3v]]"
},
{
"Test/{val1}/{val2}.{val3?}",
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2"}),
new RouteValueDictionary(),
new RouteValueDictionary(),
"UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]"
"/UrlEncode[[Test]]/UrlEncode[[someval1]]/UrlEncode[[someval2]]"
},
{
"Test/{val1}.{val2}.{val3}.{val4?}",
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2" }),
new RouteValueDictionary(),
new RouteValueDictionary(new {val4 = "someval4", val3 = "someval3" }),
"UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]UrlEncode[[.]]"
"/UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]UrlEncode[[.]]"
+ "UrlEncode[[someval3]]UrlEncode[[.]]UrlEncode[[someval4]]"
},
{
@ -236,7 +236,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2" }),
new RouteValueDictionary(),
new RouteValueDictionary(new {val3 = "someval3" }),
"UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]UrlEncode[[.]]"
"/UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]UrlEncode[[.]]"
+ "UrlEncode[[someval3]]"
},
{
@ -244,14 +244,15 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { }),
new RouteValueDictionary(),
new RouteValueDictionary(new {val2 = "someval2" }),
"UrlEncode[[Test]]/UrlEncode[[.]]UrlEncode[[someval2]]"
"/UrlEncode[[Test]]/UrlEncode[[.]]UrlEncode[[someval2]]"
},
{
"Test/{val1}.{val2}",
new RouteValueDictionary(new {val1 = "someval1", val2 = "someval2" }),
new RouteValueDictionary(),
new RouteValueDictionary(new {val3 = "someval3" }),
"UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]?UrlEncode[[val3]]=UrlEncode[[someval3]]"
"/UrlEncode[[Test]]/UrlEncode[[someval1]]UrlEncode[[.]]UrlEncode[[someval2]]?" +
"UrlEncode[[val3]]=UrlEncode[[someval3]]"
},
};
@ -306,7 +307,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
null,
new RouteValueDictionary(new { lang = "en", region = "US" }),
new RouteValueDictionary(new { lang = "xx", region = "yy" }),
"UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]UrlEncode[[a]]");
"/UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[-]]UrlEncode[[yy]]UrlEncode[[a]]");
}
[Fact]
@ -339,7 +340,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
null,
new RouteValueDictionary(new { lang = "en" }),
new RouteValueDictionary(new { lang = "xx" }),
"UrlEncode[[language]]/UrlEncode[[xx]]");
"/UrlEncode[[language]]/UrlEncode[[xx]]");
}
[Fact]
@ -350,7 +351,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
null,
new RouteValueDictionary(new { lang = "en" }),
new RouteValueDictionary(new { lang = "xx" }),
"UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]");
"/UrlEncode[[language]]/UrlEncode[[xx]]UrlEncode[[-]]");
}
[Fact]
@ -361,7 +362,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
null,
new RouteValueDictionary(new { lang = "en" }),
new RouteValueDictionary(new { lang = "xx" }),
"UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]");
"/UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]");
}
[Fact]
@ -372,7 +373,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
null,
new RouteValueDictionary(new { lang = "en" }),
new RouteValueDictionary(new { lang = "xx" }),
"UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[a]]");
"/UrlEncode[[language]]/UrlEncode[[a]]UrlEncode[[xx]]UrlEncode[[a]]");
}
[Fact]
@ -383,7 +384,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { action = "Index", id = (string)null }),
new RouteValueDictionary(new { controller = "home", action = "list", id = (string)null }),
new RouteValueDictionary(new { controller = "products" }),
"UrlEncode[[products]]UrlEncode[[.mvc]]");
"/UrlEncode[[products]]UrlEncode[[.mvc]]");
}
[Fact]
@ -394,7 +395,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { lang = "xx", region = "yy" }),
new RouteValueDictionary(new { lang = "en", region = "US" }),
new RouteValueDictionary(new { lang = "zz" }),
"UrlEncode[[language]]/UrlEncode[[zz]]UrlEncode[[-]]UrlEncode[[yy]]");
"/UrlEncode[[language]]/UrlEncode[[zz]]UrlEncode[[-]]UrlEncode[[yy]]");
}
[Fact]
@ -406,7 +407,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { id = "defaultid" }),
new RouteValueDictionary(new { controller = "home", action = "oldaction" }),
new RouteValueDictionary(new { action = "newaction" }),
"UrlEncode[[home]]/UrlEncode[[newaction]]");
"/UrlEncode[[home]]/UrlEncode[[newaction]]");
}
[Fact]
@ -439,7 +440,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
null,
new RouteValueDictionary(new { }),
new RouteValueDictionary(new { controller = "home" }),
"UrlEncode[[foo]]/UrlEncode[[home]]");
"/UrlEncode[[foo]]/UrlEncode[[home]]");
}
[Fact]
@ -451,7 +452,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { id = (string)null }),
new RouteValueDictionary(new { controller = "home", action = "oldaction", id = (string)null }),
new RouteValueDictionary(new { action = "newaction" }),
"UrlEncode[[home]]/UrlEncode[[newaction]]");
"/UrlEncode[[home]]/UrlEncode[[newaction]]");
}
[Fact]
@ -462,7 +463,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { language = "en", locale = "US" }),
new RouteValueDictionary(),
new RouteValueDictionary(new { controller = "Orders" }),
"UrlEncode[[Orders]]/UrlEncode[[en]]UrlEncode[[-]]UrlEncode[[US]]");
"/UrlEncode[[Orders]]/UrlEncode[[en]]UrlEncode[[-]]UrlEncode[[US]]");
}
[Fact]
@ -473,7 +474,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { action = "Index", id = "" }),
new RouteValueDictionary(new { controller = "Home", action = "Index", id = "" }),
new RouteValueDictionary(new { controller = "Home", action = "TestAction", id = "1", format = (string)null }),
"UrlEncode[[Home]]UrlEncode[[.mvc]]/UrlEncode[[TestAction]]/UrlEncode[[1]]");
"/UrlEncode[[Home]]UrlEncode[[.mvc]]/UrlEncode[[TestAction]]/UrlEncode[[1]]");
}
[Fact]
@ -506,7 +507,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new { p2 = "d2", p3 = "d3" },
new { p1 = "v1", },
new { p2 = "", p3 = "" },
"UrlEncode[[v1]]");
"/UrlEncode[[v1]]");
}
[Fact]
@ -517,7 +518,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new { action = "Index", id = (string)null },
new { controller = "orig", action = "init", id = "123" },
new { action = "new", },
"UrlEncode[[orig]]/UrlEncode[[new]]");
"/UrlEncode[[orig]]/UrlEncode[[new]]");
}
[Fact]
@ -528,7 +529,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new { year = 1995, occasion = "Christmas", action = "Play", SafeParam = "SafeParamValue" },
new { controller = "UrlRouting", action = "Play", category = "Photos", year = "2008", occasion = "Easter", SafeParam = "SafeParamValue" },
new { year = (string)null, occasion = "Hola" },
"UrlEncode[[UrlGeneration1]]/UrlEncode[[UrlRouting]]UrlEncode[[.mvc]]/UrlEncode[[Play]]/"
"/UrlEncode[[UrlGeneration1]]/UrlEncode[[UrlRouting]]UrlEncode[[.mvc]]/UrlEncode[[Play]]/"
+ "UrlEncode[[Photos]]/UrlEncode[[1995]]/UrlEncode[[Hola]]");
}
@ -552,7 +553,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { year = 1995, occasion = "Christmas", action = "Play", SafeParam = "SafeParamValue" }),
ambientValues,
values,
"UrlEncode[[UrlGeneration1]]/UrlEncode[[UrlRouting]]UrlEncode[[.mvc]]/"
"/UrlEncode[[UrlGeneration1]]/UrlEncode[[UrlRouting]]UrlEncode[[.mvc]]/"
+ "UrlEncode[[Play]]/UrlEncode[[Photos]]/UrlEncode[[1995]]/UrlEncode[[Hola]]");
}
@ -575,7 +576,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { action = "Default" }),
ambientValues,
values,
"UrlEncode[[subtest]]UrlEncode[[.mvc]]/UrlEncode[[Default]]/UrlEncode[[b]]");
"/UrlEncode[[subtest]]UrlEncode[[.mvc]]/UrlEncode[[Default]]/UrlEncode[[b]]");
}
[Fact]
@ -593,7 +594,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { controller = "Home" }),
new RouteValueDictionary(new { controller = "home", action = "Index", id = (string)null }),
values,
"%23;%3F%3A@%26%3D%2B$,.mvc/showcategory/123?so%3Frt=de%3Fsc&maxPrice=100",
"/%23;%3F%3A@%26%3D%2B$,.mvc/showcategory/123?so%3Frt=de%3Fsc&maxPrice=100",
UrlEncoder.Default);
}
@ -608,7 +609,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { controller = "Home" }),
new RouteValueDictionary(new { controller = "home", action = "Index", id = (string)null }),
values,
"UrlEncode[[products]]UrlEncode[[.mvc]]/UrlEncode[[showcategory]]/UrlEncode[[123]]" +
"/UrlEncode[[products]]UrlEncode[[.mvc]]/UrlEncode[[showcategory]]/UrlEncode[[123]]" +
"?UrlEncode[[so?rt]]=UrlEncode[[de?sc]]&UrlEncode[[maxPrice]]=UrlEncode[[100]]");
}
@ -629,7 +630,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
maxPrice = 100,
custom = "customValue"
}),
"UrlEncode[[products]]UrlEncode[[.mvc]]/UrlEncode[[showcategory]]/UrlEncode[[123]]" +
"/UrlEncode[[products]]UrlEncode[[.mvc]]/UrlEncode[[showcategory]]/UrlEncode[[123]]" +
"?UrlEncode[[sort]]=UrlEncode[[desc]]&UrlEncode[[maxPrice]]=UrlEncode[[100]]");
}
@ -641,7 +642,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
null,
new RouteValueDictionary(new { controller = "ho%me", action = "li st" }),
new RouteValueDictionary(),
"bl%25og/ho%25me/he%20llo/li%20st",
"/bl%25og/ho%25me/he%20llo/li%20st",
UrlEncoder.Default);
}
@ -665,7 +666,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { id = "defaultid" }),
new RouteValueDictionary(new { p1 = "v1" }),
new RouteValueDictionary(new { p2 = "v2a/v2b" }),
"UrlEncode[[v1]]/UrlEncode[[v2a/v2b]]");
"/UrlEncode[[v1]]/UrlEncode[[v2a/v2b]]");
}
[Fact]
@ -676,7 +677,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { id = "defaultid" }),
new RouteValueDictionary(new { p1 = "v1" }),
new RouteValueDictionary(new { p2 = "" }),
"UrlEncode[[v1]]");
"/UrlEncode[[v1]]");
}
[Fact]
@ -687,7 +688,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
new RouteValueDictionary(new { id = "defaultid" }),
new RouteValueDictionary(new { p1 = "v1" }),
new RouteValueDictionary(new { p2 = (string)null }),
"UrlEncode[[v1]]");
"/UrlEncode[[v1]]");
}
#if ROUTE_COLLECTION

View File

@ -381,7 +381,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(result);
Assert.Equal(new PathString(expectedPath), result.VirtualPath);
Assert.Equal(expectedPath, result.VirtualPath);
Assert.Same(route, result.Router);
Assert.Empty(result.DataTokens);
}
@ -404,7 +404,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(result);
// The Binder binds to /template
Assert.Equal(new PathString($"/template"), result.VirtualPath);
Assert.Equal("/template", result.VirtualPath);
Assert.Same(route, result.Router);
Assert.Empty(result.DataTokens);
}
@ -436,7 +436,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(result);
Assert.Equal(new PathString(expectedPath), result.VirtualPath);
Assert.Equal(expectedPath, result.VirtualPath);
Assert.Same(route, result.Router);
Assert.Empty(result.DataTokens);
}
@ -468,7 +468,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(result);
Assert.Equal(new PathString(expectedPath), result.VirtualPath);
Assert.Equal(expectedPath, result.VirtualPath);
Assert.Same(route, result.Router);
Assert.Empty(result.DataTokens);
}
@ -505,7 +505,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(result);
Assert.Equal(new PathString("/template/5"), result.VirtualPath);
Assert.Equal("/template/5", result.VirtualPath);
Assert.Same(route, result.Router);
Assert.Empty(result.DataTokens);
}
@ -555,7 +555,7 @@ namespace Microsoft.AspNet.Routing.Tree
else
{
Assert.NotNull(result);
Assert.Equal(new PathString(expectedPath), result.VirtualPath);
Assert.Equal(expectedPath, result.VirtualPath);
Assert.Same(route, result.Router);
Assert.Empty(result.DataTokens);
}
@ -594,7 +594,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(result);
Assert.Equal(new PathString("/template/5"), result.VirtualPath);
Assert.Equal("/template/5", result.VirtualPath);
Assert.Same(route, result.Router);
Assert.Empty(result.DataTokens);
}
@ -626,7 +626,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(result);
Assert.Equal(new PathString("/template/5"), result.VirtualPath);
Assert.Equal("/template/5", result.VirtualPath);
Assert.Same(route, result.Router);
Assert.Empty(result.DataTokens);
}
@ -658,7 +658,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(result);
Assert.Equal(new PathString("/first/5"), result.VirtualPath);
Assert.Equal("/first/5", result.VirtualPath);
Assert.Same(route, result.Router);
Assert.Empty(result.DataTokens);
}
@ -761,8 +761,8 @@ namespace Microsoft.AspNet.Routing.Tree
IEnumerable<TreeRouteLinkGenerationEntry> namedEntries)
{
// Arrange
var expectedLink = new PathString(
namedEntries.First().Template.Parameters.Any() ? "/template/5" : "/template");
var expectedLink =
namedEntries.First().Template.Parameters.Any() ? "/template/5" : "/template";
var matchingEntries = Enumerable.Empty<TreeRouteMatchingEntry>();
@ -804,7 +804,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(result);
Assert.Equal(new PathString("/named"), result.VirtualPath);
Assert.Equal("/named", result.VirtualPath);
Assert.Same(route, result.Router);
Assert.Empty(result.DataTokens);
}
@ -903,7 +903,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(result);
Assert.Equal(new PathString("/template/5"), result.VirtualPath);
Assert.Equal("/template/5", result.VirtualPath);
Assert.Same(route, result.Router);
Assert.Empty(result.DataTokens);
}
@ -922,7 +922,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/api/Store"), pathData.VirtualPath);
Assert.Equal("/api/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -941,7 +941,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/api/Store"), pathData.VirtualPath);
Assert.Equal("/api/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -976,7 +976,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/api/Store"), pathData.VirtualPath);
Assert.Equal("/api/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -995,7 +995,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/api/Store/Index"), pathData.VirtualPath);
Assert.Equal("/api/Store/Index", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1020,7 +1020,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/api/AwesomeCo/dosomething/Store/Index"), pathData.VirtualPath);
Assert.Equal("/api/AwesomeCo/dosomething/Store/Index", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1039,7 +1039,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/api/Store"), pathData.VirtualPath);
Assert.Equal("/api/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1060,7 +1060,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/api/Store/Index/5"), pathData.VirtualPath);
Assert.Equal("/api/Store/Index/5", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1096,7 +1096,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/api/Store"), pathData.VirtualPath);
Assert.Equal("/api/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1115,7 +1115,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/api/Store?id=5"), pathData.VirtualPath);
Assert.Equal("/api/Store?id=5", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1136,7 +1136,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/api2/Blog"), pathData.VirtualPath);
Assert.Equal("/api2/Blog", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1162,7 +1162,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/Help/Store"), pathData.VirtualPath);
Assert.Equal("/Help/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1188,7 +1188,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/Help/Store"), pathData.VirtualPath);
Assert.Equal("/Help/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1216,7 +1216,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/Help/Store"), pathData.VirtualPath);
Assert.Equal("/Help/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1244,7 +1244,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString("/Store"), pathData.VirtualPath);
Assert.Equal("/Store", pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}
@ -1337,7 +1337,7 @@ namespace Microsoft.AspNet.Routing.Tree
// Assert
Assert.NotNull(pathData);
Assert.Equal(new PathString(expected), pathData.VirtualPath);
Assert.Equal(expected, pathData.VirtualPath);
Assert.Same(route, pathData.Router);
Assert.Empty(pathData.DataTokens);
}