public void Insert_TreeIsUnbalanced_RebuildsTree(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.TreeIsUnbalanced += PassTreeIsUnbalanced; Assert.Throws <SuccessException>(() => tree.Insert(candidate)); }
public void Contains_TreeDoesNotContainKey_ReturnsFalse() { var tree = new ScapegoatTree <int>(1); tree.Insert(2); Assert.IsFalse(tree.Contains(-1)); }
public void Contains_TreeHasKey_ReturnsTrue() { var tree = new ScapegoatTree <int>(1); tree.Insert(2); Assert.IsTrue(tree.Contains(2)); }
public void Remove_KeyIsRootWithTwoChildren_RemovesKey() { var tree = new ScapegoatTree <int>(1); var inserted = tree.Insert(-1); Assert.IsTrue(inserted); inserted = tree.Insert(2); Assert.IsTrue(inserted); var deleted = tree.Delete(1); Assert.IsTrue(deleted); Assert.AreEqual(2, tree.Size); }
public void Insert_TreeIsUnbalanced_BalancesTree2(int root, int candidate, double alpha) { var tree = new ScapegoatTree <int>(root, alpha); var inserted = tree.Insert(candidate); Assert.True(inserted); Assert.True(tree.Size == 2); Assert.True(tree.IsAlphaWeightBalanced()); }
public void Insert_TreeIsUnbalanced_BalancesTree(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; var inserted = tree.Insert(candidate); Assert.True(inserted); Assert.True(tree.Size == 6); Assert.True(tree.IsAlphaWeightBalanced()); }
public void Insert_KeyIsNotPresent_KeyIsInserted() { var tree = new ScapegoatTree <int>(1); var inserted = tree.Insert(2); Assert.IsTrue(inserted); Assert.AreEqual(2, tree.Size); Assert.AreEqual(2, tree.MaxSize); }
public void Insert_KeyIsPresent_ReturnsFalse() { var tree = new ScapegoatTree <int>(1); var inserted = tree.Insert(1); Assert.IsFalse(inserted); Assert.AreEqual(1, tree.Size); Assert.AreEqual(1, tree.MaxSize); }
public void Insert_RootIsNull_InsertsRoot() { var tree = new ScapegoatTree <int>(); var inserted = tree.Insert(1); Assert.IsTrue(inserted); Assert.IsNotNull(tree.Root); Assert.AreEqual(1, tree.Root !.Key); Assert.AreEqual(1, tree.Size); Assert.AreEqual(1, tree.MaxSize); }
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); } }); }