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