示例#1
0
        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");
        }