Пример #1
0
        public void IncrementSubtreeSize_DecrementSubtreeSize_GetSubtreeSize()
        {
            TrieNode <Char> aNode = new TrieNode <Char>('a', null);
            TrieNode <Char> bNode = new TrieNode <Char>('b', aNode);

            aNode.AddChildNode(bNode.Item, bNode);
            TrieNode <Char> cNode = new TrieNode <Char>('c', aNode);

            aNode.AddChildNode(cNode.Item, cNode);
            TrieNode <Char> dNode = new TrieNode <Char>('d', bNode);

            bNode.AddChildNode(dNode.Item, dNode);

            Assert.AreEqual(1, aNode.GetSubtreeSize('b'));
            Assert.AreEqual(1, aNode.GetSubtreeSize('c'));
            Assert.AreEqual(1, bNode.GetSubtreeSize('d'));

            aNode.IncrementSubtreeSize('b');

            Assert.AreEqual(2, aNode.GetSubtreeSize('b'));
            Assert.AreEqual(1, aNode.GetSubtreeSize('c'));
            Assert.AreEqual(1, bNode.GetSubtreeSize('d'));

            aNode.DecrementSubtreeSize('b');

            Assert.AreEqual(1, aNode.GetSubtreeSize('b'));
            Assert.AreEqual(1, aNode.GetSubtreeSize('c'));
            Assert.AreEqual(1, bNode.GetSubtreeSize('d'));
        }
Пример #2
0
        public void DecrementSubtreeSize_ChildNodeForItemDoesntExist()
        {
            TrieNode <Char> aNode = new TrieNode <Char>('a', null);
            TrieNode <Char> bNode = new TrieNode <Char>('b', aNode);

            aNode.AddChildNode(bNode.Item, bNode);
            TrieNode <Char> cNode = new TrieNode <Char>('c', aNode);

            aNode.AddChildNode(cNode.Item, cNode);

            ArgumentException e = Assert.Throws <ArgumentException>(delegate
            {
                aNode.DecrementSubtreeSize('d');
            });

            Assert.That(e.Message, NUnit.Framework.Does.StartWith("A child node for the specified item 'd' does not exist."));
            Assert.AreEqual("item", e.ParamName);
        }