public void HashTableRemovingTest()
        {
            foreach (Type hashTableType in this.hashTableTypes)
            {
                IHashTable hashTable = Activator.CreateInstance(hashTableType) as IHashTable;
                Assert.IsTrue(hashTable.Add(5));
                Assert.IsTrue(hashTable.Add(15));
                Assert.IsTrue(hashTable.Add(14));

                Assert.IsTrue(hashTable.Remove(15),
                              "hash table [{0}] should remove existed element",
                              hashTableType.Name);

                Assert.IsFalse(hashTable.Remove(17),
                               "hash table [{0}] should not be able to remove not existed element",
                               hashTableType.Name);

                Assert.IsTrue(hashTable.Contains(5),
                              "hash table [{0}] should contains not removed element",
                              hashTableType.Name);

                Assert.IsFalse(hashTable.Contains(15),
                               "hash table [{0}] should not contains removed element",
                               hashTableType.Name);
            }
        }
Exemple #2
0
        public void Contains_ShouldReturnFalse_WhenElementIsNotInTable(string notExistingKey)
        {
            // arrange
            _hashTable.Add(Key2, Value2);

            // act & assert
            _hashTable.Contains(notExistingKey).ShouldBeFalse();
        }
        public void Test_Contains()
        {
            IHashTable <string> ht = this.CreateFullHashTable();

            foreach (string value in VALUES)
            {
                Assert.True(ht.Contains(value));
            }
        }
        public void Test_Add()
        {
            IHashTable <string> ht = this.CreateInstance(2);

            ht.Add("Metal Church");

            Assert.True(ht.Contains("Metal Church"));
            Assert.Equal(1, ht.Count);
        }
        public void HashTableAddingTest()
        {
            foreach (Type hashTableType in this.hashTableTypes)
            {
                IHashTable hashTable = Activator.CreateInstance(hashTableType) as IHashTable;
                Assert.IsTrue(hashTable.Add(5));

                Assert.IsTrue(hashTable.Contains(5),
                              "hash table [{0}] should contains added value",
                              hashTableType.Name);
            }
        }
        public void HashTableCreationTest()
        {
            foreach (Type hashTableType in this.hashTableTypes)
            {
                IHashTable hashTable = Activator.CreateInstance(hashTableType) as IHashTable;

                Assert.IsNotNull(hashTable);
                Assert.IsFalse(hashTable.Contains(5),
                               "hash table [{0}] should not contains any value after creation",
                               hashTableType.Name);
            }
        }
        public void Test_Delete()
        {
            IHashTable <string> ht = this.CreateFullHashTable();

            foreach (string value in VALUES)
            {
                ht.Delete(value);

                Assert.False(ht.Contains(value));
            }

            Assert.Equal(0, ht.Count);
        }
        public void HashTableRebuildTest()
        {
            foreach (Type hashTableType in this.hashTableTypes)
            {
                IHashTable hashTable = Activator.CreateInstance(hashTableType, 2) as IHashTable;
                Assert.IsTrue(hashTable.Add(5));
                Assert.IsTrue(hashTable.Add(15));
                Assert.IsTrue(hashTable.Add(13));
                Assert.IsTrue(hashTable.Add(17));

                Assert.IsTrue(hashTable.Contains(15),
                              "hash table [{0}] should contains element 15 after rebuilding",
                              hashTableType.Name);

                Assert.IsTrue(hashTable.Contains(5),
                              "hash table [{0}] should contains element 5 after rebuilding",
                              hashTableType.Name);

                Assert.IsTrue(hashTable.Contains(13),
                              "hash table [{0}] should contains element 14 after rebuilding",
                              hashTableType.Name);
            }
        }
        public void Test_Resize_Up()
        {
            IHashTable <string> ht = this.CreateInstance(10);

            int oldSize = ht.Size;

            // It's needed more than 75% to trigger
            // a resize up.
            for (int i = 0; i < oldSize; i++)
            {
                ht.Add(i.ToString());
            }

            for (int i = 0; i < oldSize; i++)
            {
                Assert.True(ht.Contains(i.ToString()));
            }

            Assert.Equal(oldSize * 2, ht.Size);
            Assert.Equal(oldSize, ht.Count);
        }
        public void Test_Resize_Down()
        {
            IHashTable <string> ht = this.CreateInstance(10);

            int oldSize = ht.Size;

            // It's needed more than 75% to trigger
            // a resize up.
            for (int i = 0; i < oldSize; i++)
            {
                ht.Add(i.ToString());
            }

            oldSize = ht.Size;

            // Resize up = 20
            // 20 - 20 * 0.75 = 5
            // Trigger count = 5
            int triggerCount = (int)(oldSize - oldSize * 0.75);

            // It's needed less than 25% to trigger
            // a resize down.
            // Removing the upper values eases testing.
            for (int i = oldSize; i >= triggerCount; i--)
            {
                ht.Delete(i.ToString());
            }

            for (int i = 0; i < (oldSize - oldSize * 0.75); i++)
            {
                Assert.True(ht.Contains(i.ToString()));
            }

            Assert.Equal(oldSize / 2, ht.Size);
            Assert.Equal(triggerCount, ht.Count);
        }