public void TestTrieGreedyStarFunctionality() { var endPointDescriptor = new TestEndPointDescriptor { Name = "foo", }; var firstTrie = new Trie(); firstTrie.Insert("api-docs/{path*}", endPointDescriptor); var uri = new Uri("http://localhost:8081/api-docs/content/stories"); Regex rgx; var endPoint = firstTrie.ResolveRequest(uri, out rgx); Assert.AreEqual("foo", endPoint.Name); }
public void TestTrieMerge() { var endPointDescriptor = new TestEndPointDescriptor { Name = "foo", }; var firstTrie = new Trie(); firstTrie.Insert("firstSegment/secondSegment", null); var secondTrie = new Trie(); var path = "firstSegment/anotherSegment"; secondTrie.Insert(path, endPointDescriptor); firstTrie.Merge(secondTrie, path); var uri = new Uri("http://localhost:8081/firstSegment/anotherSegment"); Regex rgx; var endPoint = firstTrie.ResolveRequest(uri, out rgx); Assert.AreEqual("foo", endPoint.Name); }
public void TestStaticEndPointAfterTokenizedEndPoint() { var endPointDescriptor = new TestEndPointDescriptor { Name = "foo", }; var firstTrie = new Trie(); firstTrie.Insert("content/media/{id}", endPointDescriptor); var secondTrie = new Trie(); var path = "content/media/search"; secondTrie.Insert(path, null); firstTrie.Merge(secondTrie, path); var uri = new Uri("http://localhost:8081/content/media/12345"); Regex rgx; var endPoint = firstTrie.ResolveRequest(uri, out rgx); Assert.AreEqual("foo", endPoint.Name); }
public void TestTrieMergeSegAfterToken() { var endPointDescriptor1 = new TestEndPointDescriptor { Name = "foo", }; var endPointDescriptor2 = new TestEndPointDescriptor { Name = "bar", }; Regex rgx; var path = "content/sites/{siteId}/settings"; var uri1 = new Uri("http://localhost:8081/content/sites/2343"); var uri2 = new Uri("http://localhost:8081/content/sites/2343/settings"); var insertTrie = new Trie(); insertTrie.Insert("content/sites/{id}", endPointDescriptor1); insertTrie.Insert(path, endPointDescriptor2); var endPointPre = insertTrie.ResolveRequest(uri1, out rgx); Assert.AreEqual("foo", endPointPre.Name); endPointPre = insertTrie.ResolveRequest(uri2, out rgx); Assert.AreEqual("bar", endPointPre.Name); var mergeTrie = new Trie(); mergeTrie.Insert("content/sites/{id}", endPointDescriptor1); var singleEndPointTrie = new Trie(); singleEndPointTrie.Insert(path, endPointDescriptor2); mergeTrie.Merge(singleEndPointTrie, path); var endPoint = mergeTrie.ResolveRequest(uri1, out rgx); Assert.AreEqual("foo", endPoint.Name); endPoint = mergeTrie.ResolveRequest(uri2, out rgx); Assert.AreEqual("bar", endPoint.Name); }
public void TestTrieMergeSecondWithNoToken() { var endPointDescriptor = new TestEndPointDescriptor { Name = "foo", }; Regex rgx; var path = "content/sites"; var uri = new Uri("http://localhost:8081/content/sites"); var firstTrie = new Trie(); firstTrie.Insert("content/sites/{siteId}", null); var secondTrie = new Trie(); secondTrie.Insert(path, endPointDescriptor); firstTrie.Merge(secondTrie, path); var endPoint = firstTrie.ResolveRequest(uri, out rgx); Assert.AreEqual("foo", endPoint.Name); }