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

            tree.Insert(2);

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

            var deleted = tree.Delete(1);

            Assert.IsFalse(deleted);
        }
Exemplo n.º 3
0
        public void Tune_AlphaIsNotValid_ThrowsException()
        {
            var expected = 9.9;

            var tree = new ScapegoatTree <int>();

            Assert.Throws <ArgumentException>(() => tree.Tune(expected));
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        public void IsAlphaWeightBalanced_RootIsNull_ReturnsTrue()
        {
            var tree = new ScapegoatTree <int>();

            var result = tree.IsAlphaWeightBalanced();

            Assert.IsTrue(result);
        }
Exemplo n.º 6
0
        public void Contains_TreeHasKey_ReturnsTrue()
        {
            var tree = new ScapegoatTree <int>(1);

            tree.Insert(2);

            Assert.IsTrue(tree.Contains(2));
        }
Exemplo n.º 7
0
        public void Search_RootIsNull_ReturnsNull()
        {
            var tree = new ScapegoatTree <int>();

            var result = tree.Search(1);

            Assert.IsNull(result);
        }
Exemplo n.º 8
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.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        public void Tune_AlphaIsValid_ChangesAlpha()
        {
            var expected = 0.7;

            var tree = new ScapegoatTree <int>();

            tree.Tune(expected);

            Assert.AreEqual(expected, tree.Alpha);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
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.º 15
0
        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());
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
        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);
        }
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 21
0
        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);
        }
Exemplo n.º 22
0
        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);
        }
Exemplo n.º 23
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.º 24
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.º 25
0
        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));
        }
Exemplo n.º 26
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.º 27
0
        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());
        }
Exemplo n.º 28
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);
                }
            });
        }
Exemplo n.º 29
0
        public void Contains_RootHasKey_ReturnsTrue()
        {
            var tree = new ScapegoatTree <int>(1);

            Assert.IsTrue(tree.Contains(1));
        }
Exemplo n.º 30
0
        public void FindScapegoatInPath_PathIsEmpty_ThrowsAnException()
        {
            var tree = new ScapegoatTree <int>();

            Assert.Throws <ArgumentException>(() => tree.FindScapegoatInPath(new Stack <Node <int> >()));
        }