public void Remove()
{
const int InitialCount = 5;
var trie = new Trie<bool>
{
{ "ABC", false }, { "AB", false }, { "ADE", false }, { "ABCDE", false }, { "X", false }
};
Assert.IsFalse((trie as IDictionary<string, bool>).Remove(new KeyValuePair<string, bool>("XY", true)));
Assert.IsFalse((trie as IDictionary<string, bool>).Remove(new KeyValuePair<string, bool>("ABCD", true)));
Assert.IsFalse((trie as IDictionary<string, bool>).Remove(new KeyValuePair<string, bool>("ABCDE", true)));
Assert.AreEqual(InitialCount, trie.Count);
Assert.IsTrue((trie as IDictionary<string, bool>).Remove(new KeyValuePair<string, bool>("ABCDE", false)));
Assert.AreEqual(InitialCount - 1, trie.Count);
Assert.IsTrue(trie.Remove("X"));
Assert.AreEqual(InitialCount - 2, trie.Count);
Assert.IsTrue(trie.Remove("ABC"));
Assert.AreEqual(InitialCount - 3, trie.Count);
Assert.IsFalse(trie.ContainsKey("ABC"));
Assert.IsTrue(trie.ContainsKey("AB"));
Assert.IsTrue(trie.ContainsKey("ADE"));
}