Skip to content

Commit 3e008c0

Browse files
author
Ahmad Alhour
committed
fix: resolve all xUnit analyzer warnings and implement ChainedHashTable enumerator
- Replace Assert.Equal(0/1, x.Count) with Assert.Empty/Assert.Single - Replace Assert.True/False(x.Contains()) with Assert.Contains/DoesNotContain - Implement ChainedHashTable.GetEnumerator() (was NotImplementedException) - Remove xUnit warning suppression from UnitTest.csproj All 623 tests pass with zero warnings.
1 parent 2f60a0c commit 3e008c0

15 files changed

Lines changed: 96 additions & 89 deletions

DataStructures/Dictionaries/ChainedHashTable.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -620,12 +620,24 @@ public void Clear()
620620

621621
public IEnumerator<KeyValuePair<TKey, TValue>> GetEnumerator()
622622
{
623-
throw new NotImplementedException();
623+
for (int i = 0; i < _hashTableStore.Length; i++)
624+
{
625+
var chain = _hashTableStore[i];
626+
if (chain != null && chain.Count > 0)
627+
{
628+
var node = chain.Head;
629+
while (node != null)
630+
{
631+
yield return new KeyValuePair<TKey, TValue>(node.Key, node.Value);
632+
node = node.Next;
633+
}
634+
}
635+
}
624636
}
625637

626638
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
627639
{
628-
throw new NotImplementedException();
640+
return GetEnumerator();
629641
}
630642

631643
}

UnitTest/DataStructuresTests/GraphsDirectedDenseGraphTest.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ public static void OutgoingEdges_ReturnsCorrectCounts()
2323
var graph = CreateTestGraph();
2424

2525
Assert.Equal(2, graph.OutgoingEdges("a").Count());
26-
Assert.Equal(1, graph.OutgoingEdges("s").Count());
26+
Assert.Single(graph.OutgoingEdges("s"));
2727
Assert.Equal(3, graph.OutgoingEdges("d").Count());
2828
Assert.Equal(3, graph.OutgoingEdges("x").Count());
2929
Assert.Equal(3, graph.OutgoingEdges("c").Count());
30-
Assert.Equal(1, graph.OutgoingEdges("v").Count());
31-
Assert.Equal(1, graph.OutgoingEdges("f").Count());
30+
Assert.Single(graph.OutgoingEdges("v"));
31+
Assert.Single(graph.OutgoingEdges("f"));
3232
Assert.Empty(graph.OutgoingEdges("z"));
3333
}
3434

@@ -37,14 +37,14 @@ public static void IncomingEdges_ReturnsCorrectCounts()
3737
{
3838
var graph = CreateTestGraph();
3939

40-
Assert.Equal(1, graph.IncomingEdges("a").Count());
40+
Assert.Single(graph.IncomingEdges("a"));
4141
Assert.Equal(2, graph.IncomingEdges("s").Count());
4242
Assert.Equal(2, graph.IncomingEdges("d").Count());
43-
Assert.Equal(1, graph.IncomingEdges("x").Count());
43+
Assert.Single(graph.IncomingEdges("x"));
4444
Assert.Equal(3, graph.IncomingEdges("c").Count());
45-
Assert.Equal(1, graph.IncomingEdges("v").Count());
45+
Assert.Single(graph.IncomingEdges("v"));
4646
Assert.Equal(3, graph.IncomingEdges("f").Count());
47-
Assert.Equal(1, graph.IncomingEdges("z").Count());
47+
Assert.Single(graph.IncomingEdges("z"));
4848
}
4949

5050
[Fact]

UnitTest/DataStructuresTests/GraphsDirectedSparseGraphTest.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ public static void OutgoingEdges_ReturnsCorrectCounts()
2323
var graph = CreateTestGraph();
2424

2525
Assert.Equal(2, graph.OutgoingEdges("a").Count());
26-
Assert.Equal(1, graph.OutgoingEdges("s").Count());
26+
Assert.Single(graph.OutgoingEdges("s"));
2727
Assert.Equal(3, graph.OutgoingEdges("d").Count());
2828
Assert.Equal(3, graph.OutgoingEdges("x").Count());
2929
Assert.Equal(3, graph.OutgoingEdges("c").Count());
30-
Assert.Equal(1, graph.OutgoingEdges("v").Count());
31-
Assert.Equal(1, graph.OutgoingEdges("f").Count());
30+
Assert.Single(graph.OutgoingEdges("v"));
31+
Assert.Single(graph.OutgoingEdges("f"));
3232
Assert.Empty(graph.OutgoingEdges("z"));
3333
}
3434

@@ -37,14 +37,14 @@ public static void IncomingEdges_ReturnsCorrectCounts()
3737
{
3838
var graph = CreateTestGraph();
3939

40-
Assert.Equal(1, graph.IncomingEdges("a").Count());
40+
Assert.Single(graph.IncomingEdges("a"));
4141
Assert.Equal(2, graph.IncomingEdges("s").Count());
4242
Assert.Equal(2, graph.IncomingEdges("d").Count());
43-
Assert.Equal(1, graph.IncomingEdges("x").Count());
43+
Assert.Single(graph.IncomingEdges("x"));
4444
Assert.Equal(3, graph.IncomingEdges("c").Count());
45-
Assert.Equal(1, graph.IncomingEdges("v").Count());
45+
Assert.Single(graph.IncomingEdges("v"));
4646
Assert.Equal(3, graph.IncomingEdges("f").Count());
47-
Assert.Equal(1, graph.IncomingEdges("z").Count());
47+
Assert.Single(graph.IncomingEdges("z"));
4848
}
4949

5050
[Fact]

UnitTest/DataStructuresTests/GraphsDirectedWeightedDenseGraphTest.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ public static void OutgoingEdges_ReturnsCorrectCounts()
4141
var graph = CreateTestGraph();
4242

4343
Assert.Equal(2, graph.OutgoingEdges("a").Count());
44-
Assert.Equal(1, graph.OutgoingEdges("s").Count());
44+
Assert.Single(graph.OutgoingEdges("s"));
4545
Assert.Equal(3, graph.OutgoingEdges("d").Count());
4646
Assert.Equal(3, graph.OutgoingEdges("x").Count());
4747
Assert.Equal(3, graph.OutgoingEdges("c").Count());
48-
Assert.Equal(1, graph.OutgoingEdges("v").Count());
49-
Assert.Equal(1, graph.OutgoingEdges("f").Count());
48+
Assert.Single(graph.OutgoingEdges("v"));
49+
Assert.Single(graph.OutgoingEdges("f"));
5050
Assert.Empty(graph.OutgoingEdges("z"));
5151
}
5252

@@ -55,14 +55,14 @@ public static void IncomingEdges_ReturnsCorrectCounts()
5555
{
5656
var graph = CreateTestGraph();
5757

58-
Assert.Equal(1, graph.IncomingEdges("a").Count());
58+
Assert.Single(graph.IncomingEdges("a"));
5959
Assert.Equal(2, graph.IncomingEdges("s").Count());
6060
Assert.Equal(2, graph.IncomingEdges("d").Count());
61-
Assert.Equal(1, graph.IncomingEdges("x").Count());
61+
Assert.Single(graph.IncomingEdges("x"));
6262
Assert.Equal(3, graph.IncomingEdges("c").Count());
63-
Assert.Equal(1, graph.IncomingEdges("v").Count());
63+
Assert.Single(graph.IncomingEdges("v"));
6464
Assert.Equal(3, graph.IncomingEdges("f").Count());
65-
Assert.Equal(1, graph.IncomingEdges("z").Count());
65+
Assert.Single(graph.IncomingEdges("z"));
6666
}
6767

6868
[Fact]

UnitTest/DataStructuresTests/GraphsDirectedWeightedSparseGraphTest.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ public static void OutgoingEdges_ReturnsCorrectCounts()
2323
var graph = CreateTestGraph();
2424

2525
Assert.Equal(2, graph.OutgoingEdges("a").Count());
26-
Assert.Equal(1, graph.OutgoingEdges("s").Count());
26+
Assert.Single(graph.OutgoingEdges("s"));
2727
Assert.Equal(3, graph.OutgoingEdges("d").Count());
2828
Assert.Equal(3, graph.OutgoingEdges("x").Count());
2929
Assert.Equal(3, graph.OutgoingEdges("c").Count());
30-
Assert.Equal(1, graph.OutgoingEdges("v").Count());
31-
Assert.Equal(1, graph.OutgoingEdges("f").Count());
30+
Assert.Single(graph.OutgoingEdges("v"));
31+
Assert.Single(graph.OutgoingEdges("f"));
3232
Assert.Empty(graph.OutgoingEdges("z"));
3333
}
3434

@@ -37,14 +37,14 @@ public static void IncomingEdges_ReturnsCorrectCounts()
3737
{
3838
var graph = CreateTestGraph();
3939

40-
Assert.Equal(1, graph.IncomingEdges("a").Count());
40+
Assert.Single(graph.IncomingEdges("a"));
4141
Assert.Equal(2, graph.IncomingEdges("s").Count());
4242
Assert.Equal(2, graph.IncomingEdges("d").Count());
43-
Assert.Equal(1, graph.IncomingEdges("x").Count());
43+
Assert.Single(graph.IncomingEdges("x"));
4444
Assert.Equal(3, graph.IncomingEdges("c").Count());
45-
Assert.Equal(1, graph.IncomingEdges("v").Count());
45+
Assert.Single(graph.IncomingEdges("v"));
4646
Assert.Equal(3, graph.IncomingEdges("f").Count());
47-
Assert.Equal(1, graph.IncomingEdges("z").Count());
47+
Assert.Single(graph.IncomingEdges("z"));
4848
}
4949

5050
[Fact]

UnitTest/DataStructuresTests/GraphsUndirectedDenseGraphTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public static void OutgoingEdges_ReturnsCorrectCounts()
2929
Assert.Equal(4, graph.OutgoingEdges("c").Count());
3030
Assert.Equal(2, graph.OutgoingEdges("v").Count());
3131
Assert.Equal(3, graph.OutgoingEdges("f").Count());
32-
Assert.Equal(1, graph.OutgoingEdges("z").Count());
32+
Assert.Single(graph.OutgoingEdges("z"));
3333
}
3434

3535
[Fact]
@@ -44,7 +44,7 @@ public static void IncomingEdges_EqualsOutgoingEdges_ForUndirectedGraph()
4444
Assert.Equal(4, graph.IncomingEdges("c").Count());
4545
Assert.Equal(2, graph.IncomingEdges("v").Count());
4646
Assert.Equal(3, graph.IncomingEdges("f").Count());
47-
Assert.Equal(1, graph.IncomingEdges("z").Count());
47+
Assert.Single(graph.IncomingEdges("z"));
4848
}
4949

5050
[Fact]

UnitTest/DataStructuresTests/GraphsUndirectedSparseGraphTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public static void OutgoingEdges_ReturnsCorrectCounts()
2929
Assert.Equal(4, graph.OutgoingEdges("c").Count());
3030
Assert.Equal(2, graph.OutgoingEdges("v").Count());
3131
Assert.Equal(3, graph.OutgoingEdges("f").Count());
32-
Assert.Equal(1, graph.OutgoingEdges("z").Count());
32+
Assert.Single(graph.OutgoingEdges("z"));
3333
}
3434

3535
[Fact]
@@ -45,7 +45,7 @@ public static void IncomingEdges_EqualsOutgoingEdges_ForUndirectedGraph()
4545
Assert.Equal(4, graph.IncomingEdges("c").Count());
4646
Assert.Equal(2, graph.IncomingEdges("v").Count());
4747
Assert.Equal(3, graph.IncomingEdges("f").Count());
48-
Assert.Equal(1, graph.IncomingEdges("z").Count());
48+
Assert.Single(graph.IncomingEdges("z"));
4949
}
5050

5151
[Fact]

UnitTest/DataStructuresTests/GraphsUndirectedWeightedSparseGraphTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public static void OutgoingEdges_ReturnsCorrectCounts()
2929
Assert.Equal(4, graph.OutgoingEdges("c").Count());
3030
Assert.Equal(2, graph.OutgoingEdges("v").Count());
3131
Assert.Equal(3, graph.OutgoingEdges("f").Count());
32-
Assert.Equal(1, graph.OutgoingEdges("z").Count());
32+
Assert.Single(graph.OutgoingEdges("z"));
3333
}
3434

3535
[Fact]
@@ -44,7 +44,7 @@ public static void IncomingEdges_EqualsOutgoingEdges_ForUndirectedGraph()
4444
Assert.Equal(4, graph.IncomingEdges("c").Count());
4545
Assert.Equal(2, graph.IncomingEdges("v").Count());
4646
Assert.Equal(3, graph.IncomingEdges("f").Count());
47-
Assert.Equal(1, graph.IncomingEdges("z").Count());
47+
Assert.Single(graph.IncomingEdges("z"));
4848
}
4949

5050
[Fact]

UnitTest/DataStructuresTests/HashTableSeparateChainingTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public static void Remove_AllKeys_EmptiesTable()
8686
table.Remove("Name1");
8787
table.Remove("Name3");
8888

89-
Assert.Equal(0, table.Count);
89+
Assert.Empty(table);
9090
}
9191

9292
[Fact]
@@ -126,7 +126,7 @@ public static void CopyTo_EmptyTable_CopiesNothing()
126126
table.Remove("Name1");
127127
table.Remove("Name3");
128128

129-
Assert.Equal(0, table.Count);
129+
Assert.Empty(table);
130130
var array = new KeyValuePair<string, int>[table.Count];
131131
table.CopyTo(array, 0);
132132

UnitTest/DataStructuresTests/OpenScatterHashTableTest.cs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ public static void Constructor_Default_CreatesEmptyTable()
1515
{
1616
var hashTable = new OpenScatterHashTable<int, string>();
1717

18-
Assert.Equal(0, hashTable.Count);
1918
Assert.Empty(hashTable);
2019
}
2120

@@ -24,7 +23,6 @@ public static void Constructor_WithCapacity_CreatesEmptyTable()
2423
{
2524
var hashTable = new OpenScatterHashTable<int, string>(100);
2625

27-
Assert.Equal(0, hashTable.Count);
2826
Assert.Empty(hashTable);
2927
}
3028

@@ -45,7 +43,7 @@ public static void Add_SingleItem_IncreasesCount()
4543

4644
hashTable.Add(1, "one");
4745

48-
Assert.Equal(1, hashTable.Count);
46+
Assert.Single(hashTable);
4947
Assert.True(hashTable.ContainsKey(1));
5048
}
5149

@@ -105,7 +103,7 @@ public static void Add_KeyValuePair_Works()
105103

106104
hashTable.Add(new KeyValuePair<int, string>(1, "one"));
107105

108-
Assert.Equal(1, hashTable.Count);
106+
Assert.Single(hashTable);
109107
Assert.Equal("one", hashTable[1]);
110108
}
111109

@@ -137,7 +135,7 @@ public static void Indexer_Set_NewKey_AddsItem()
137135

138136
hashTable[1] = "one";
139137

140-
Assert.Equal(1, hashTable.Count);
138+
Assert.Single(hashTable);
141139
Assert.Equal("one", hashTable[1]);
142140
}
143141

@@ -149,7 +147,7 @@ public static void Indexer_Set_ExistingKey_UpdatesValue()
149147

150148
hashTable[1] = "ONE";
151149

152-
Assert.Equal(1, hashTable.Count);
150+
Assert.Single(hashTable);
153151
Assert.Equal("ONE", hashTable[1]);
154152
}
155153

@@ -224,7 +222,7 @@ public static void Remove_ExistingKey_ReturnsTrueAndDecreasesCount()
224222
bool removed = hashTable.Remove(1);
225223

226224
Assert.True(removed);
227-
Assert.Equal(1, hashTable.Count);
225+
Assert.Single(hashTable);
228226
Assert.False(hashTable.ContainsKey(1));
229227
Assert.True(hashTable.ContainsKey(2));
230228
}
@@ -238,7 +236,7 @@ public static void Remove_NonExistingKey_ReturnsFalse()
238236
bool removed = hashTable.Remove(99);
239237

240238
Assert.False(removed);
241-
Assert.Equal(1, hashTable.Count);
239+
Assert.Single(hashTable);
242240
}
243241

244242
[Fact]
@@ -250,12 +248,12 @@ public static void Remove_KeyValuePair_OnlyRemovesIfBothMatch()
250248
// Wrong value - should not remove
251249
bool removed1 = hashTable.Remove(new KeyValuePair<int, string>(1, "wrong"));
252250
Assert.False(removed1);
253-
Assert.Equal(1, hashTable.Count);
251+
Assert.Single(hashTable);
254252

255253
// Correct key and value - should remove
256254
bool removed2 = hashTable.Remove(new KeyValuePair<int, string>(1, "one"));
257255
Assert.True(removed2);
258-
Assert.Equal(0, hashTable.Count);
256+
Assert.Empty(hashTable);
259257
}
260258

261259
[Fact]
@@ -267,7 +265,7 @@ public static void Remove_ThenAddSameKey_Works()
267265

268266
hashTable.Add(1, "new one");
269267

270-
Assert.Equal(1, hashTable.Count);
268+
Assert.Single(hashTable);
271269
Assert.Equal("new one", hashTable[1]);
272270
}
273271

@@ -285,7 +283,6 @@ public static void Clear_RemovesAllItems()
285283

286284
hashTable.Clear();
287285

288-
Assert.Equal(0, hashTable.Count);
289286
Assert.Empty(hashTable);
290287
Assert.False(hashTable.ContainsKey(1));
291288
}
@@ -336,7 +333,7 @@ public static void Contains_ExistingPair_ReturnsTrue()
336333
var hashTable = new OpenScatterHashTable<int, string>();
337334
hashTable.Add(1, "one");
338335

339-
Assert.True(hashTable.Contains(new KeyValuePair<int, string>(1, "one")));
336+
Assert.Contains(new KeyValuePair<int, string>(1, "one"), hashTable);
340337
}
341338

342339
[Fact]
@@ -345,7 +342,7 @@ public static void Contains_WrongValue_ReturnsFalse()
345342
var hashTable = new OpenScatterHashTable<int, string>();
346343
hashTable.Add(1, "one");
347344

348-
Assert.False(hashTable.Contains(new KeyValuePair<int, string>(1, "wrong")));
345+
Assert.DoesNotContain(new KeyValuePair<int, string>(1, "wrong"), hashTable);
349346
}
350347

351348
[Fact]
@@ -354,7 +351,7 @@ public static void Contains_NonExistingKey_ReturnsFalse()
354351
var hashTable = new OpenScatterHashTable<int, string>();
355352
hashTable.Add(1, "one");
356353

357-
Assert.False(hashTable.Contains(new KeyValuePair<int, string>(99, "whatever")));
354+
Assert.DoesNotContain(new KeyValuePair<int, string>(99, "whatever"), hashTable);
358355
}
359356

360357
#endregion

0 commit comments

Comments
 (0)