Exemplo n.º 1
0
        public void Delete_RootIsNull_ReturnsFalse()
        {
            var tree = new ScapegoatTree <int>();

            var deleted = tree.Delete(1);

            Assert.IsFalse(deleted);
        }
Exemplo n.º 2
0
        public void Delete_KeyIsNotPresent_ReturnsFalse()
        {
            var tree = new ScapegoatTree <int>(1);

            var deleted = tree.Delete(2);

            Assert.IsFalse(deleted);
            Assert.AreEqual(1, tree.Size);
        }
Exemplo n.º 3
0
        public void Remove_KeyIsRootWithNoChildren_RemovesKey()
        {
            var tree = new ScapegoatTree <int>(1);

            var deleted = tree.Delete(1);

            Assert.IsTrue(deleted);
            Assert.IsNull(tree.Root);
            Assert.AreEqual(0, tree.Size);
        }
Exemplo n.º 4
0
        public void Remove_KeyIsRootWithOneRightChild_RemovesKey()
        {
            var tree = new ScapegoatTree <int>(1);

            var inserted = tree.Insert(2);

            Assert.IsTrue(inserted);

            var deleted = tree.Delete(1);

            Assert.IsTrue(deleted);
            Assert.AreEqual(1, tree.Size);
        }
Exemplo n.º 5
0
        public void Remove_KeyIsPresent_RemovesKey()
        {
            var tree = new ScapegoatTree <int>(1);

            var inserted = tree.Insert(2);

            Assert.IsTrue(inserted);

            var deleted = tree.Delete(2);

            Assert.IsTrue(deleted);
            Assert.AreEqual(1, tree.Size);
        }
Exemplo n.º 6
0
        public void Delete_TreeIsUnbalanced_MaxSizeEqualsSize(int root, int[] keys, int candidate, double alpha)
        {
            var tree = new ScapegoatTree <int>(root, alpha);

            tree.TreeIsUnbalanced += FailTreeIsUnbalanced;

            foreach (var item in keys)
            {
                Assert.DoesNotThrow(() => tree.Insert(item));
            }

            tree.TreeIsUnbalanced -= FailTreeIsUnbalanced;

            tree.Delete(candidate);

            Assert.AreEqual(tree.Size, tree.MaxSize);
        }
Exemplo n.º 7
0
        public void Delete_TreeIsUnbalanced_BalancesTree(int root, int[] keys, int[] candidates, double alpha)
        {
            var tree = new ScapegoatTree <int>(root, alpha);

            tree.TreeIsUnbalanced += FailTreeIsUnbalanced;

            foreach (var item in keys)
            {
                Assert.DoesNotThrow(() => tree.Insert(item));
            }

            tree.TreeIsUnbalanced -= FailTreeIsUnbalanced;
            tree.TreeIsUnbalanced += PassTreeIsUnbalanced;

            Assert.Throws <SuccessException>(() =>
            {
                foreach (var item in candidates)
                {
                    tree.Delete(item);
                }
            });
        }