Added Template property to RouteTemplate

This commit is contained in:
Ajay Bhargav Baaskaran 2015-11-10 11:52:11 -08:00
parent f4f6c1127f
commit cef221f57a
3 changed files with 30 additions and 21 deletions

View File

@ -13,13 +13,15 @@ namespace Microsoft.AspNet.Routing.Template
{ {
private const string SeparatorString = "/"; private const string SeparatorString = "/";
public RouteTemplate(List<TemplateSegment> segments) public RouteTemplate(string template, List<TemplateSegment> segments)
{ {
if (segments == null) if (segments == null)
{ {
throw new ArgumentNullException(nameof(segments)); throw new ArgumentNullException(nameof(segments));
} }
Template = template;
Segments = segments; Segments = segments;
Parameters = new List<TemplatePart>(); Parameters = new List<TemplatePart>();
@ -37,9 +39,11 @@ namespace Microsoft.AspNet.Routing.Template
} }
} }
public IList<TemplatePart> Parameters { get; private set; } public string Template { get; }
public IList<TemplateSegment> Segments { get; private set; } public IList<TemplatePart> Parameters { get; }
public IList<TemplateSegment> Segments { get; }
public TemplateSegment GetSegment(int index) public TemplateSegment GetSegment(int index)
{ {

View File

@ -53,7 +53,7 @@ namespace Microsoft.AspNet.Routing.Template
if (IsAllValid(context, segments)) if (IsAllValid(context, segments))
{ {
return new RouteTemplate(segments); return new RouteTemplate(routeTemplate, segments);
} }
else else
{ {

View File

@ -21,7 +21,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "cool"; var template = "cool";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateLiteral("cool")); expected.Segments[0].Parts.Add(TemplatePart.CreateLiteral("cool"));
@ -38,7 +38,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p}"; var template = "{p}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add( expected.Segments[0].Parts.Add(
TemplatePart.CreateParameter("p", false, false, defaultValue: null, inlineConstraints: null)); TemplatePart.CreateParameter("p", false, false, defaultValue: null, inlineConstraints: null));
@ -57,7 +57,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p?}"; var template = "{p?}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add( expected.Segments[0].Parts.Add(
TemplatePart.CreateParameter("p", false, true, defaultValue: null, inlineConstraints: null)); TemplatePart.CreateParameter("p", false, true, defaultValue: null, inlineConstraints: null));
@ -76,7 +76,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "cool/awesome/super"; var template = "cool/awesome/super";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateLiteral("cool")); expected.Segments[0].Parts.Add(TemplatePart.CreateLiteral("cool"));
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
@ -97,7 +97,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p1}/{p2}/{*p3}"; var template = "{p1}/{p2}/{*p3}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
@ -136,7 +136,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "cool-{p1}"; var template = "cool-{p1}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateLiteral("cool-")); expected.Segments[0].Parts.Add(TemplatePart.CreateLiteral("cool-"));
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
@ -159,7 +159,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p1}-cool"; var template = "{p1}-cool";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
false, false,
@ -182,7 +182,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p1}-cool-{p2}"; var template = "{p1}-cool-{p2}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
false, false,
@ -211,7 +211,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "cool-{p1}-awesome"; var template = "cool-{p1}-awesome";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateLiteral("cool-")); expected.Segments[0].Parts.Add(TemplatePart.CreateLiteral("cool-"));
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
@ -235,7 +235,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p1}.{p2?}"; var template = "{p1}.{p2?}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
false, false,
@ -265,7 +265,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p1}.{p2}"; var template = "{p1}.{p2}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
false, false,
@ -295,7 +295,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p1}.{p2}.{p3?}"; var template = "{p1}.{p2}.{p3?}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
false, false,
@ -334,7 +334,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p1}.{p2}.{p3}"; var template = "{p1}.{p2}.{p3}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
false, false,
@ -373,7 +373,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p1}.{p2?}/{p3}"; var template = "{p1}.{p2?}/{p3}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
false, false,
@ -409,7 +409,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p1}/{p2}.{p3?}"; var template = "{p1}/{p2}.{p3?}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
false, false,
@ -446,7 +446,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
// Arrange // Arrange
var template = "{p2}/.{p3?}"; var template = "{p2}/.{p3?}";
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p2", expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p2",
false, false,
@ -480,7 +480,7 @@ namespace Microsoft.AspNet.Routing.Template.Tests
public void Parse_RegularExpressions(string template, string constraint) public void Parse_RegularExpressions(string template, string constraint)
{ {
// Arrange // Arrange
var expected = new RouteTemplate(new List<TemplateSegment>()); var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment()); expected.Segments.Add(new TemplateSegment());
var c = new InlineConstraint(constraint); var c = new InlineConstraint(constraint);
expected.Segments[0].Parts.Add( expected.Segments[0].Parts.Add(
@ -830,6 +830,11 @@ namespace Microsoft.AspNet.Routing.Template.Tests
} }
else else
{ {
if (!string.Equals(x.Template, y.Template, StringComparison.Ordinal))
{
return false;
}
if (x.Segments.Count != y.Segments.Count) if (x.Segments.Count != y.Segments.Count)
{ {
return false; return false;