public void DoubleList_RemoveAt() { var list = new DoubleList(); V v; v = new V(0); list.AddToFront(v); list.RemoveAt(0); Assert.AreEqual(0, list.Count); list.AddToEnd(v); Assert.AreEqual(1, list.Count); list.Clear(); list.AddToFront(new V(2)); list.AddToFront(new V(1)); list.AddToFront(new V(0)); Assert.AreEqual(3, list.Count); Assert.AreEqual(0, ((V)list[0]).Value); Assert.AreEqual(1, ((V)list[1]).Value); Assert.AreEqual(2, ((V)list[2]).Value); list.RemoveAt(1); Assert.AreEqual(2, list.Count); Assert.AreEqual(0, ((V)list[0]).Value); Assert.AreEqual(2, ((V)list[1]).Value); }
public void DoubleList_RemoveFromEnd() { var list = new DoubleList(); list.AddToFront(new V(0)); list.Remove(list[0]); Assert.AreEqual(0, list.Count); list.AddToFront(new V(2)); list.AddToFront(new V(1)); list.AddToFront(new V(0)); Assert.AreEqual(3, list.Count); Assert.AreEqual(0, ((V)list[0]).Value); Assert.AreEqual(1, ((V)list[1]).Value); Assert.AreEqual(2, ((V)list[2]).Value); list.Remove(list[2]); Assert.AreEqual(2, list.Count); Assert.AreEqual(0, ((V)list[0]).Value); Assert.AreEqual(1, ((V)list[1]).Value); list.Remove(list[1]); Assert.AreEqual(1, list.Count); Assert.AreEqual(0, ((V)list[0]).Value); list.Remove(list[0]); Assert.AreEqual(0, list.Count); }
public void DoubleList_Clear() { var list = new DoubleList(); list.AddToFront(new V(2)); list.AddToFront(new V(1)); list.AddToFront(new V(0)); list.Clear(); Assert.AreEqual(0, list.Count); }
public void DoubleList_EnumerateWithModify() { var list = new DoubleList(); list.AddToEnd(new V(0)); list.AddToEnd(new V(1)); list.AddToEnd(new V(2)); try { foreach (V v in list) { v.Value = 10; list.AddToEnd(new V(100)); } Assert.Fail(); } catch (InvalidOperationException) { } catch { Assert.Fail(); } try { foreach (V v in list) { v.Value = 10; list.AddToFront(new V(100)); } Assert.Fail(); } catch (InvalidOperationException) { } catch { Assert.Fail(); } try { foreach (V v in list) { v.Value = 10; list.RemoveAt(0); } Assert.Fail(); } catch (InvalidOperationException) { } catch { Assert.Fail(); } try { foreach (V v in list) { v.Value = 10; list.Clear(); } Assert.Fail(); } catch (InvalidOperationException) { } catch { Assert.Fail(); } }