Ejemplo n.º 1
0
        void Test_keys()
        {
            string[] expectedKeys = { "a", "b", "c" };
            MyHashTableSeperateChaining <string, int> table = new MyHashTableSeperateChaining <string, int>();

            table.Insert("a", 1);
            table.Insert("b", 2);
            table.Insert("c", 3);

            var keys = table.Keys();

            Assert.Equal(3, keys.Count);
            keys.ForEach(k => {
                int index = Array.IndexOf(expectedKeys, k);
                Assert.NotEqual(-1, index);
                expectedKeys[index] = null;
            });

            foreach (var k in expectedKeys)
            {
                Assert.Null(k);
            }
        }
Ejemplo n.º 2
0
        void Test_exhaustively()
        {
            MyHashTableSeperateChaining <string, string> table = new MyHashTableSeperateChaining <string, string>();

            table.Insert("a", "1");
            table.Insert("b", "2");
            table.Insert("c", "3");

            Assert.Equal(3, table.Size);
            Assert.False(table.IsEmpty());

            table.Remove("a");

            Assert.False(table.ContainsKey("a"));
            Assert.True(table.ContainsKey("b"));
            Assert.True(table.ContainsKey("c"));

            Assert.Equal(2, table.Size);

            var keys   = table.Keys();
            var values = table.Values();

            Assert.Equal(2, keys.Count);
            Assert.Equal(2, values.Count);

            table.Clear();

            Assert.True(table.IsEmpty());
            Assert.False(table.ContainsKey("a"));
            Assert.False(table.ContainsKey("b"));
            Assert.False(table.ContainsKey("c"));

            var keys2   = table.Keys();
            var values2 = table.Values();

            Assert.Empty(keys2);
            Assert.Empty(values2);


            table.Insert("h", "100");
            table.Insert("z", "255");
            table.Insert("z", "300");

            Assert.Equal(2, table.Size);
            Assert.False(table.IsEmpty());
            Assert.Equal("300", table.GetValue("z"));

            Assert.False(table.ContainsKey("a"));
            Assert.False(table.ContainsKey("b"));
            Assert.False(table.ContainsKey("c"));
            Assert.True(table.ContainsKey("h"));
            Assert.True(table.ContainsKey("z"));

            var keys3   = table.Keys();
            var values3 = table.Values();

            Assert.Equal(2, keys3.Count);
            Assert.Equal(2, values3.Count);


            table.Remove("z");

            Assert.Equal(1, table.Size);
            Assert.False(table.IsEmpty());

            Assert.True(table.ContainsKey("h"));
            Assert.False(table.ContainsKey("z"));

            table.Remove("h");


            Assert.True(table.IsEmpty());
            Assert.False(table.ContainsKey("h"));
            Assert.False(table.ContainsKey("z"));

            var keys4   = table.Keys();
            var values4 = table.Values();

            Assert.Empty(keys4);
            Assert.Empty(values4);

            Assert.Throws <ArgumentException>(() => table.Remove("z"));
        }