Cleaning up project structure and simplifying things.
This commit is contained in:
127
Rest.Net.Tests/RouteMatcherTests.cs
Normal file
127
Rest.Net.Tests/RouteMatcherTests.cs
Normal file
@ -0,0 +1,127 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using FluentAssertions;
|
||||
using Xunit;
|
||||
|
||||
namespace MontoyaTech.Rest.Net.Tests
|
||||
{
|
||||
public class RouteMatcherTests
|
||||
{
|
||||
[Fact]
|
||||
public void SyntaxWithRootShouldMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/", "/", out _).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithRootCatchAllShouldMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/test1/test2", "/**", out _).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithRootWildcardShouldMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/test1", "/*", out _).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithRootWildcardShouldNotMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/test1/test2", "/*", out _).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithRootNotShouldNotMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/test1", "/!test1", out _).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithRootNotShouldMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/test2", "/!test1", out _).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithArgumentShouldNotMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/test1/test2", "/{a}", out _).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithArgumentShouldMatch()
|
||||
{
|
||||
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]
|
||||
public void SyntaxWithWildcardShouldMatch()
|
||||
{
|
||||
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()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/a/b", "/a/b|c", out _).Should().BeTrue();
|
||||
RouteMatcher.Matches("http://localhost/a/c", "/a/b|c", out _).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithOrShouldNotMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/a/d", "/a/b|c", out _).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithNotAndShouldMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/a/d", "/a/!b&!c", out _).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithNotAndShouldNotMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/a/b", "/a/!b&!c", out _).Should().BeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithSegmentShouldMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/a", "/a", out _).Should().BeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SyntaxWithMultipleSegmentsShouldMatch()
|
||||
{
|
||||
RouteMatcher.Matches("http://localhost/a/b/c", "/a/b/c", out _).Should().BeTrue();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user