public void DeleteInexistentChild() { var reverseTrie = new ReverseTrie <MessageHandler>(-1); reverseTrie.RegisterHandler("a/", (c, m) => { }); reverseTrie.RegisterHandler("a/b/", (c, m) => { }); reverseTrie.UnregisterHandler("c/"); Assert.AreEqual(2, reverseTrie.Match("a/b/").Count); }
public void Match() { var reverseTrie = new ReverseTrie <MessageHandler>(-1); reverseTrie.RegisterHandler("a/", (c, m) => { }); reverseTrie.RegisterHandler("a/b/c/", (c, m) => { }); reverseTrie.RegisterHandler("a/+/c/", (c, m) => { }); reverseTrie.RegisterHandler("a/b/c/d/", (c, m) => { }); reverseTrie.RegisterHandler("a/+/c/+/", (c, m) => { }); reverseTrie.RegisterHandler("x/", (c, m) => { }); reverseTrie.RegisterHandler("x/y/", (c, m) => { }); reverseTrie.RegisterHandler("x/+/z/", (c, m) => { }); Dictionary <string, int> tests = new Dictionary <string, int> { ["a/"] = 1, ["a/1/"] = 1, ["a/2/"] = 1, ["a/1/2/"] = 1, ["a/1/2/3/"] = 1, ["a/x/y/c/"] = 1, ["a/x/c/"] = 2, ["a/b/c/"] = 3, ["a/b/c/d/"] = 5, ["a/b/c/e/"] = 4, ["x/y/c/e/"] = 2 }; foreach (var kv in tests) { var results = reverseTrie.Match(kv.Key); Assert.AreEqual(kv.Value, results.Count); } }
public void DeleteLonelyRoot() { var reverseTrie = new ReverseTrie <MessageHandler>(-1); reverseTrie.RegisterHandler("a/", (c, m) => { }); reverseTrie.UnregisterHandler("a/"); Assert.AreEqual(0, reverseTrie.Match("a/").Count); }