public void TestRouteTableSimple() { var t = new RouteTable(); t.AddRoute("/user/{id}", "ID"); t.AddRoute("/user/{id}/action", "ACTION"); t.AddRoute("/user/{id}/action/{level}", "LEVEL"); t.AddRoute("", "DEFAULT"); var rdefault = t.Find("/not/a/route"); Assert.AreNotEqual(null, rdefault, "Match a default route"); var rid = t.Find("/user/person"); var raction = t.Find("/user/person/action"); var rlevel = t.Find("/user/person/action/verbose"); Assert.AreNotEqual(null, rid, "Match the id route"); Assert.AreNotEqual(null, raction, "Match the action route"); Assert.AreNotEqual(null, rlevel, "Match the level route"); Assert.AreEqual("ID", rid.Route.Data, $"Id route is id ({rid.Route.Data})"); Assert.AreEqual("ACTION", raction.Route.Data, $"Action route is id ({raction.Route.Data})"); Assert.AreEqual("LEVEL", rlevel.Route.Data, $"Level route is id ({rlevel.Route.Data})"); Assert.AreEqual("person", rid.Values["id"], $"Id route id is person"); Assert.AreEqual(1, raction.Values.Count, $"action matched 1"); Assert.AreEqual("person", rlevel.Values["id"], $"Level id is person"); Assert.AreEqual("verbose", rlevel.Values["level"], $"Level level is verbose"); Assert.AreEqual(2, rlevel.Values.Count, $"action route matched 2"); }