diff --git a/Rest.Net.Tests/Rest.Net.Tests/RouteMatcherTests.cs b/Rest.Net.Tests/Rest.Net.Tests/RouteMatcherTests.cs index 30d9237..8b36a2d 100644 --- a/Rest.Net.Tests/Rest.Net.Tests/RouteMatcherTests.cs +++ b/Rest.Net.Tests/Rest.Net.Tests/RouteMatcherTests.cs @@ -55,7 +55,18 @@ namespace MontoyaTech.Rest.Net.Tests [Fact] public void SyntaxWithArgumentShouldMatch() { - RouteMatcher.Matches("http://localhost/test1", "/{a}", out _).Should().BeTrue(); + RouteMatcher.Matches("http://localhost/test1", "/{a}", out string[] arguments).Should().BeTrue(); + arguments.Length.Should().Be(1); + arguments[0].Should().Be("test1"); + } + + [Fact] + public void SyntaxWithArgumentsShouldMatch() + { + RouteMatcher.Matches("http://localhost/a/1/2/d", "/a/{b}/{c}/d", out string[] arguments).Should().BeTrue(); + arguments.Length.Should().Be(2); + arguments[0].Should().Be("1"); + arguments[1].Should().Be("2"); } [Fact] @@ -64,6 +75,18 @@ namespace MontoyaTech.Rest.Net.Tests RouteMatcher.Matches("http://localhost/1/2/3", "/1/*/3", out _).Should().BeTrue(); } + [Fact] + public void SyntaxWithWildcardShouldNotMatch() + { + RouteMatcher.Matches("http://localhost/1/2/3", "/1/*", out _).Should().BeFalse(); + } + + [Fact] + public void SyntaxWithCatchallShouldMatch() + { + RouteMatcher.Matches("http://localhost/1/2/3", "/1/**", out _).Should().BeTrue(); + } + [Fact] public void SyntaxWithOrShouldMatch() { diff --git a/Rest.Net/Rest.Net/Rest.Net.csproj b/Rest.Net/Rest.Net/Rest.Net.csproj index 61d9465..595afa5 100644 --- a/Rest.Net/Rest.Net/Rest.Net.csproj +++ b/Rest.Net/Rest.Net/Rest.Net.csproj @@ -14,7 +14,8 @@ MontoyaTech.Rest.Net MontoyaTech.Rest.Net True - 1.0.8 + 1.0.9 + Optimized and fixed bugs within the route matcher. Changed argument matching to support segments after the argument for more complex routes. diff --git a/Rest.Net/Rest.Net/RouteMatcher.cs b/Rest.Net/Rest.Net/RouteMatcher.cs index b1d797d..559ebd1 100644 --- a/Rest.Net/Rest.Net/RouteMatcher.cs +++ b/Rest.Net/Rest.Net/RouteMatcher.cs @@ -133,7 +133,7 @@ namespace MontoyaTech.Rest.Net { break; } - else if (condition == urlSegment) + else if (condition == urlSegment && condition != "&" && condition != "|") { match = true; }