Skip to content
This repository has been archived by the owner on Nov 27, 2018. It is now read-only.

Commit

Permalink
Added Template property to RouteTemplate
Browse files Browse the repository at this point in the history
  • Loading branch information
ajaybhargavb committed Nov 12, 2015
1 parent f4f6c11 commit cef221f
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 21 deletions.
10 changes: 7 additions & 3 deletions src/Microsoft.AspNet.Routing/Template/RouteTemplate.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,15 @@ public class RouteTemplate
{
private const string SeparatorString = "/";

public RouteTemplate(List<TemplateSegment> segments)
public RouteTemplate(string template, List<TemplateSegment> segments)
{
if (segments == null)
{
throw new ArgumentNullException(nameof(segments));
}

Template = template;

Segments = segments;

Parameters = new List<TemplatePart>();
Expand All @@ -37,9 +39,11 @@ public RouteTemplate(List<TemplateSegment> segments)
}
}

public IList<TemplatePart> Parameters { get; private set; }
public string Template { get; }

public IList<TemplatePart> Parameters { get; }

public IList<TemplateSegment> Segments { get; private set; }
public IList<TemplateSegment> Segments { get; }

public TemplateSegment GetSegment(int index)
{
Expand Down
2 changes: 1 addition & 1 deletion src/Microsoft.AspNet.Routing/Template/TemplateParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public static RouteTemplate Parse(string routeTemplate)

if (IsAllValid(context, segments))
{
return new RouteTemplate(segments);
return new RouteTemplate(routeTemplate, segments);
}
else
{
Expand Down
39 changes: 22 additions & 17 deletions test/Microsoft.AspNet.Routing.Tests/Template/TemplateParserTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public void Parse_SingleLiteral()
// Arrange
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[0].Parts.Add(TemplatePart.CreateLiteral("cool"));

Expand All @@ -38,7 +38,7 @@ public void Parse_SingleParameter()
// Arrange
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[0].Parts.Add(
TemplatePart.CreateParameter("p", false, false, defaultValue: null, inlineConstraints: null));
Expand All @@ -57,7 +57,7 @@ public void Parse_OptionalParameter()
// Arrange
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[0].Parts.Add(
TemplatePart.CreateParameter("p", false, true, defaultValue: null, inlineConstraints: null));
Expand All @@ -76,7 +76,7 @@ public void Parse_MultipleLiterals()
// Arrange
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[0].Parts.Add(TemplatePart.CreateLiteral("cool"));
expected.Segments.Add(new TemplateSegment());
Expand All @@ -97,7 +97,7 @@ public void Parse_MultipleParameters()
// Arrange
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[0].Parts.Add(TemplatePart.CreateParameter("p1",
Expand Down Expand Up @@ -136,7 +136,7 @@ public void Parse_ComplexSegment_LP()
// Arrange
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[0].Parts.Add(TemplatePart.CreateLiteral("cool-"));
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
Expand All @@ -159,7 +159,7 @@ public void Parse_ComplexSegment_PL()
// Arrange
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[0].Parts.Add(TemplatePart.CreateParameter("p1",
false,
Expand All @@ -182,7 +182,7 @@ public void Parse_ComplexSegment_PLP()
// Arrange
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[0].Parts.Add(TemplatePart.CreateParameter("p1",
false,
Expand Down Expand Up @@ -211,7 +211,7 @@ public void Parse_ComplexSegment_LPL()
// Arrange
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[0].Parts.Add(TemplatePart.CreateLiteral("cool-"));
expected.Segments[0].Parts.Add(TemplatePart.CreateParameter("p1",
Expand All @@ -235,7 +235,7 @@ public void Parse_ComplexSegment_OptionalParameterFollowingPeriod()
// Arrange
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[0].Parts.Add(TemplatePart.CreateParameter("p1",
false,
Expand Down Expand Up @@ -265,7 +265,7 @@ public void Parse_ComplexSegment_ParametersFollowingPeriod()
// Arrange
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[0].Parts.Add(TemplatePart.CreateParameter("p1",
false,
Expand Down Expand Up @@ -295,7 +295,7 @@ public void Parse_ComplexSegment_OptionalParameterFollowingPeriod_ThreeParameter
// Arrange
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[0].Parts.Add(TemplatePart.CreateParameter("p1",
false,
Expand Down Expand Up @@ -334,7 +334,7 @@ public void Parse_ComplexSegment_ThreeParametersSeperatedByPeriod()
// Arrange
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[0].Parts.Add(TemplatePart.CreateParameter("p1",
false,
Expand Down Expand Up @@ -373,7 +373,7 @@ public void Parse_ComplexSegment_OptionalParameterFollowingPeriod_MiddleSegment(
// Arrange
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[0].Parts.Add(TemplatePart.CreateParameter("p1",
false,
Expand Down Expand Up @@ -409,7 +409,7 @@ public void Parse_ComplexSegment_OptionalParameterFollowingPeriod_LastSegment()
// Arrange
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[0].Parts.Add(TemplatePart.CreateParameter("p1",
false,
Expand Down Expand Up @@ -446,7 +446,7 @@ public void Parse_ComplexSegment_OptionalParameterFollowingPeriod_PeriodAfterSla
// Arrange
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[0].Parts.Add(TemplatePart.CreateParameter("p2",
false,
Expand Down Expand Up @@ -480,7 +480,7 @@ public void Parse_ComplexSegment_OptionalParameterFollowingPeriod_PeriodAfterSla
public void Parse_RegularExpressions(string template, string constraint)
{
// Arrange
var expected = new RouteTemplate(new List<TemplateSegment>());
var expected = new RouteTemplate(template, new List<TemplateSegment>());
expected.Segments.Add(new TemplateSegment());
var c = new InlineConstraint(constraint);
expected.Segments[0].Parts.Add(
Expand Down Expand Up @@ -830,6 +830,11 @@ public bool Equals(RouteTemplate x, RouteTemplate y)
}
else
{
if (!string.Equals(x.Template, y.Template, StringComparison.Ordinal))
{
return false;
}

if (x.Segments.Count != y.Segments.Count)
{
return false;
Expand Down

0 comments on commit cef221f

Please sign in to comment.