Skip to content

Commit d6a98e3

Browse files
committed
Fixed bugs associated with Remove method
1 parent e205ea2 commit d6a98e3

File tree

2 files changed

+50
-2
lines changed

2 files changed

+50
-2
lines changed

DataStructures/Lists/CircularBuffer.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,11 +213,17 @@ public bool Remove(T item)
213213
_circularBuffer = new T[Length + 1];
214214
Array.Copy(sourceArray, _circularBuffer, sourceArray.Length);
215215

216-
if (!item.Equals(default(T)))
216+
if (!Equals(item,default(T)))
217217
{
218218
_end = sourceArray.Length - 1;
219219
_count = sourceArray.Length-1;
220-
}
220+
}
221+
else
222+
{
223+
_end = sourceArray.Length;
224+
_count = sourceArray.Length;
225+
}
226+
221227
return true;
222228
}
223229

UnitTest/DataStructuresTests/CircularBufferTest.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,48 @@ public static void TestingRemoveMethod() {
212212
Assert.Equal(1, circularBuffer.Pop());
213213
Assert.Equal(2, circularBuffer.Pop());
214214
Assert.Equal(3, circularBuffer.Pop());
215+
216+
//Test for removing duplicate values of default(T)
217+
circularBuffer = new CircularBuffer<byte>(12, false);
218+
circularBuffer.Add(1);
219+
circularBuffer.Add(0);
220+
circularBuffer.Add(2);
221+
circularBuffer.Add(0);
222+
circularBuffer.Add(3);
223+
circularBuffer.Add(0);
224+
circularBuffer.Add(4);
225+
circularBuffer.Add(0);
226+
circularBuffer.Add(5);
227+
228+
circularBuffer.Remove(0);
229+
Assert.Equal(5, circularBuffer.Count);
230+
231+
Assert.Equal(1, circularBuffer.Pop());
232+
Assert.Equal(2, circularBuffer.Pop());
233+
Assert.Equal(3, circularBuffer.Pop());
234+
Assert.Equal(4, circularBuffer.Pop());
235+
Assert.Equal(5, circularBuffer.Pop());
236+
237+
//Test for removing duplicate values of default(T) for strings
238+
var stringBuffer = new CircularBuffer<string>(10, false);
239+
stringBuffer.Add("one");
240+
stringBuffer.Add(null);
241+
stringBuffer.Add("two");
242+
stringBuffer.Add(null);
243+
stringBuffer.Add("three");
244+
stringBuffer.Add(null);
245+
stringBuffer.Add("four");
246+
stringBuffer.Add(null);
247+
stringBuffer.Add("five");
248+
249+
stringBuffer.Remove(null);
250+
Assert.Equal(5, stringBuffer.Count);
251+
252+
Assert.Equal("one", stringBuffer.Pop());
253+
Assert.Equal("two", stringBuffer.Pop());
254+
Assert.Equal("three", stringBuffer.Pop());
255+
Assert.Equal("four", stringBuffer.Pop());
256+
Assert.Equal("five", stringBuffer.Pop());
215257
}
216258
}
217259
}

0 commit comments

Comments
 (0)