public void Delete_RootIsNull_ReturnsFalse() { var tree = new ScapegoatTree <int>(); var deleted = tree.Delete(1); Assert.IsFalse(deleted); }
public void Delete_KeyIsNotPresent_ReturnsFalse() { var tree = new ScapegoatTree <int>(1); var deleted = tree.Delete(2); Assert.IsFalse(deleted); Assert.AreEqual(1, tree.Size); }
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); }
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); }
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); }
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); }
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); } }); }