Skip to content

Commit b1dfcb9

Browse files
committed
Divide one test on some tests and add new tests for ChainedHashTable
1 parent 917cbb5 commit b1dfcb9

File tree

1 file changed

+126
-97
lines changed

1 file changed

+126
-97
lines changed
Lines changed: 126 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
24
using DataStructures.Dictionaries;
35
using Xunit;
46

@@ -7,107 +9,134 @@ namespace UnitTest.DataStructuresTests
79
public static class HashTableSeparateChainingTest
810
{
911
[Fact]
10-
public static void DoTest()
12+
public static void Adding_ThreeDifferentElements_ReturnsSuccessful()
1113
{
12-
// TEST ADD KEY-VALUE PAIRS
13-
var studentsMarks = new ChainedHashTable<string, int>
14-
{
15-
{"Konstantinos", 124},
16-
{"Bic", 224},
17-
{"Z", 324},
18-
{"Ioanna", 424},
19-
{"Mark Zuckerberg", 524},
20-
{"Semsem", 624},
21-
{"Sa3eeed", 724},
22-
{"Sameer", 824},
23-
{"Ahmad", 924},
24-
{"Zeyad", 999},
25-
{"Mahmoood 3eed", 111},
26-
{"Mahmoood Abu 3eed", 222},
27-
{"EISA", 333},
28-
{"Test1", 3210},
29-
{"Test11", 3210},
30-
{"Test222", 3210},
31-
{"Test3333", 3210},
32-
{"Test44444", 3210},
33-
{"Test555555", 3210},
34-
{"Test6666666", 3210},
35-
{"Test77777777", 3210},
36-
{"Test888888888", 3210}
37-
};
38-
39-
// TEST FETCH KEY-VALUE
40-
var mark = studentsMarks["Ahmad"];
41-
Assert.True(mark == 924);
42-
43-
mark = studentsMarks["Konstantinos"];
44-
Assert.True(mark == 124);
45-
46-
mark = studentsMarks["Bic"];
47-
Assert.True(mark == 224);
48-
49-
mark = studentsMarks["Z"];
50-
Assert.True(mark == 324);
51-
52-
mark = studentsMarks["Ioanna"];
53-
Assert.True(mark == 424);
54-
55-
mark = studentsMarks["Mark Zuckerberg"];
56-
Assert.True(mark == 524);
57-
58-
mark = studentsMarks["Semsem"];
59-
Assert.True(mark == 624);
60-
61-
mark = studentsMarks["Sa3eeed"];
62-
Assert.True(mark == 724);
63-
64-
mark = studentsMarks["Sameer"];
65-
Assert.True(mark == 824);
66-
67-
mark = studentsMarks["Zeyad"];
68-
Assert.True(mark == 999);
69-
70-
mark = studentsMarks["Mahmoood 3eed"];
71-
Assert.True(mark == 111);
72-
73-
mark = studentsMarks["Mahmoood Abu 3eed"];
74-
Assert.True(mark == 222);
75-
76-
mark = studentsMarks["EISA"];
77-
Assert.True(mark == 333);
78-
79-
//
80-
// TEST DELETE BY KEYS
81-
studentsMarks.Remove("Ahmad");
82-
studentsMarks.Remove("Zeyad");
83-
studentsMarks.Remove("Bic");
84-
studentsMarks.Remove("Konstantinos");
85-
studentsMarks.Remove("Sameer");
86-
studentsMarks.Remove("Z");
87-
studentsMarks.Remove("Ioanna");
88-
studentsMarks.Remove("Mark Zuckerberg");
89-
studentsMarks.Remove("Semsem");
90-
studentsMarks.Remove("Sa3eeed");
91-
studentsMarks.Remove("Test1");
92-
studentsMarks.Remove("Test11");
93-
studentsMarks.Remove("Test222");
94-
studentsMarks.Remove("Test3333");
95-
studentsMarks.Remove("Test44444");
96-
studentsMarks.Remove("Test555555");
97-
studentsMarks.Remove("Test6666666");
98-
studentsMarks.Remove("Test77777777");
99-
studentsMarks.Remove("Test888888888");
14+
var studentsMarks = new ChainedHashTable<string, int>();
15+
16+
studentsMarks.Add("Name1", 1);
17+
studentsMarks.Add("Name2", 5);
18+
studentsMarks.Add(new KeyValuePair<string, int>("Name3", 3));
19+
20+
var mark = studentsMarks["Name1"];
21+
Assert.True(mark == 1);
22+
23+
mark = studentsMarks["Name2"];
24+
Assert.True(mark == 5);
25+
26+
mark = studentsMarks["Name3"];
27+
Assert.True(mark == 3);
10028

10129
Assert.True(studentsMarks.Count == 3);
30+
}
31+
32+
[Fact]
33+
public static void Adding_TwoDuplicateElements_ReturnsException()
34+
{
35+
var studentsMarks = new ChainedHashTable<string, int>();
36+
studentsMarks.Add("Name1", 1);
37+
studentsMarks.Add("Name2", 5);
38+
39+
Action act = () => studentsMarks.Add("Name2", 7);
40+
41+
var exception = Assert.Throws<ArgumentException>(act);
42+
Assert.Equal("Key already exists in the hash table.", exception.Message);
43+
}
44+
45+
[Fact]
46+
public static void GetElement_ExistingElement_ReturnsElement()
47+
{
48+
var studentsMarks = new ChainedHashTable<string, int>();
49+
studentsMarks.Add("Name1", 1);
50+
studentsMarks.Add("Name2", 5);
51+
52+
var value = studentsMarks["Name2"];
53+
54+
Assert.Equal(5, value);
55+
}
56+
57+
[Fact]
58+
public static void GetElement_NonExistingElement_ReturnsException()
59+
{
60+
var studentsMarks = new ChainedHashTable<string, int>();
61+
studentsMarks.Add("Name1", 1);
62+
studentsMarks.Add("Name2", 5);
63+
64+
int value;
65+
Action act = () => value = studentsMarks["Name3"];
66+
67+
Assert.Throws<KeyNotFoundException>(act);
68+
}
69+
70+
[Fact]
71+
public static void RemovingOneElement_ThreeDifferentElements_ReturnsSuccessful()
72+
{
73+
var studentsMarks = new ChainedHashTable<string, int>();
74+
studentsMarks.Add("Name1", 1);
75+
studentsMarks.Add("Name2", 5);
76+
studentsMarks.Add(new KeyValuePair<string, int>("Name3", 3));
77+
78+
studentsMarks.Remove("Name2");
79+
80+
var mark = studentsMarks["Name1"];
81+
Assert.True(mark == 1);
82+
83+
mark = studentsMarks["Name3"];
84+
Assert.True(mark == 3);
85+
86+
Assert.False(studentsMarks.ContainsKey("Name2"));
87+
88+
Assert.True(studentsMarks.Count == 2);
89+
}
90+
91+
[Fact]
92+
public static void RemovingAllElement_ThreeDifferentElements_ReturnsSuccessful()
93+
{
94+
var studentsMarks = new ChainedHashTable<string, int>();
95+
studentsMarks.Add("Name1", 1);
96+
studentsMarks.Add("Name2", 5);
97+
studentsMarks.Add(new KeyValuePair<string, int>("Name3", 3));
10298

103-
KeyValuePair<string, int>[] array = new KeyValuePair<string, int>[studentsMarks.Count];
104-
105-
if (studentsMarks != null)
106-
{
107-
studentsMarks.CopyTo(array, 0);
108-
}
99+
studentsMarks.Remove("Name2");
100+
studentsMarks.Remove("Name1");
101+
studentsMarks.Remove("Name3");
109102

110-
Assert.True(array.Length == studentsMarks.Count);
103+
Assert.True(studentsMarks.Count == 0);
104+
}
105+
106+
[Fact]
107+
public static void CopyTo_FilledHashTable_ReturnsSuccessful()
108+
{
109+
var studentsMarks = new ChainedHashTable<string, int>();
110+
studentsMarks.Add("Name1", 1);
111+
studentsMarks.Add("Name2", 5);
112+
studentsMarks.Add(new KeyValuePair<string, int>("Name3", 3));
113+
114+
var array = new KeyValuePair<string, int>[studentsMarks.Count];
115+
studentsMarks.CopyTo(array, 0);
116+
117+
Assert.True(studentsMarks.Count == 3);
118+
Assert.True(array.Length == 3);
119+
var arrayKeys = array.Select(x => x.Key).OrderBy(x => x).ToArray();
120+
Assert.Equal("Name1", arrayKeys[0]);
121+
Assert.Equal("Name2", arrayKeys[1]);
122+
Assert.Equal("Name3", arrayKeys[2]);
123+
}
124+
125+
[Fact]
126+
public static void CopyTo_EmptyHashTable_ReturnsSuccessful()
127+
{
128+
var studentsMarks = new ChainedHashTable<string, int>();
129+
studentsMarks.Add("Name1", 1);
130+
studentsMarks.Add("Name2", 5);
131+
studentsMarks.Add(new KeyValuePair<string, int>("Name3", 3));
132+
133+
studentsMarks.Remove("Name2");
134+
studentsMarks.Remove("Name1");
135+
studentsMarks.Remove("Name3");
136+
137+
Assert.True(studentsMarks.Count == 0);
138+
var array = new KeyValuePair<string, int>[studentsMarks.Count];
139+
studentsMarks.CopyTo(array, 0);
111140
}
112141
}
113142
}

0 commit comments

Comments
 (0)