public void Contains_TreeDoesNotContainKey_ReturnsFalse() { var tree = new ScapegoatTree <int>(1); tree.Insert(2); Assert.IsFalse(tree.Contains(-1)); }
public void Delete_RootIsNull_ReturnsFalse() { var tree = new ScapegoatTree <int>(); var deleted = tree.Delete(1); Assert.IsFalse(deleted); }
public void Tune_AlphaIsNotValid_ThrowsException() { var expected = 9.9; var tree = new ScapegoatTree <int>(); Assert.Throws <ArgumentException>(() => tree.Tune(expected)); }
public void FindScapegoatInPath_ScapegoatIsNotPresent_ThrowsAnException() { var tree = new ScapegoatTree <int>(1, 1); var path = new Stack <Node <int> >(); path.Push(tree.Root !); Assert.Throws <InvalidOperationException>(() => tree.FindScapegoatInPath(path)); }
public void IsAlphaWeightBalanced_RootIsNull_ReturnsTrue() { var tree = new ScapegoatTree <int>(); var result = tree.IsAlphaWeightBalanced(); Assert.IsTrue(result); }
public void Contains_TreeHasKey_ReturnsTrue() { var tree = new ScapegoatTree <int>(1); tree.Insert(2); Assert.IsTrue(tree.Contains(2)); }
public void Search_RootIsNull_ReturnsNull() { var tree = new ScapegoatTree <int>(); var result = tree.Search(1); Assert.IsNull(result); }
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 Constructor_NoParameters_InstanceIsValid() { var tree = new ScapegoatTree <int>(); Assert.IsNull(tree.Root); Assert.IsTrue(tree.Size == 0); Assert.IsTrue(tree.MaxSize == 0); Assert.AreEqual(0.5, tree.Alpha); }
public void Search_KeyIsPresent_ReturnsKey() { var tree = new ScapegoatTree <int>(key: 1); var result = tree.Search(1); Assert.IsNotNull(result); Assert.AreEqual(1, result !.Key); }
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 Tune_AlphaIsValid_ChangesAlpha() { var expected = 0.7; var tree = new ScapegoatTree <int>(); tree.Tune(expected); Assert.AreEqual(expected, tree.Alpha); }
public void Clear_TreeHasKeys_ClearsTree() { var tree = new ScapegoatTree <int>(1); tree.Clear(); Assert.IsTrue(tree.Size == 0); Assert.IsTrue(tree.MaxSize == 0); Assert.IsNull(tree.Root); }
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 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 Search_KeyIsNotPresent_ReturnsNull(int key) { var root = new Node <int>(1, new Node <int>(2), new Node <int>(-1)); var tree = new ScapegoatTree <int>(root, 0.5); var result = tree.Search(key); Assert.IsNull(result); }
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 Constructor_AlphaParameter_InstanceIsValid() { var expected = 0.6; var tree = new ScapegoatTree <int>(expected); Assert.IsNull(tree.Root); Assert.IsTrue(tree.Size == 0); Assert.IsTrue(tree.MaxSize == 0); Assert.AreEqual(expected, tree.Alpha); }
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 Constructor_KeyAndAlphaParameters_InstanceIsValid() { var key = 10; var alpha = 0.8; var tree = new ScapegoatTree <int>(key, alpha); Assert.IsNotNull(tree.Root); Assert.IsTrue(tree.Size == 1); Assert.IsTrue(tree.MaxSize == 1); Assert.AreEqual(alpha, tree.Alpha); }
public void Constructor_NodeAndAlphaParameters_InstanceIsValid() { var node = new Node <int>(10, new Node <int>(11), new Node <int>(1)); var alpha = 0.8; var tree = new ScapegoatTree <int>(node, alpha); Assert.IsNotNull(tree.Root); Assert.IsTrue(tree.Size == 3); Assert.IsTrue(tree.MaxSize == 3); Assert.AreEqual(alpha, tree.Alpha); }
public void Constructor_KeyParameter_InstanceIsValid() { var expected = 10; var tree = new ScapegoatTree <int>(expected); Assert.IsNotNull(tree.Root); Assert.IsTrue(tree.Root !.Key == expected); Assert.IsTrue(tree.Size == 1); Assert.IsTrue(tree.MaxSize == 1); Assert.AreEqual(0.5, tree.Alpha); }
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 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 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 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 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); } }); }
public void Contains_RootHasKey_ReturnsTrue() { var tree = new ScapegoatTree <int>(1); Assert.IsTrue(tree.Contains(1)); }
public void FindScapegoatInPath_PathIsEmpty_ThrowsAnException() { var tree = new ScapegoatTree <int>(); Assert.Throws <ArgumentException>(() => tree.FindScapegoatInPath(new Stack <Node <int> >())); }