public void RemoveAt() { Deque <string> d = new Deque <string>(); d.Insert(0, "a"); d.Insert(1, "b"); d.Insert(0, "c"); d.Insert(2, "d"); d.Insert(1, "e"); d.Insert(4, "f"); d.Insert(3, "g"); d.Insert(2, "h"); d.Insert(0, "i"); d.Insert(2, "j"); d.Insert(4, "k"); d.RemoveAt(4); d.RemoveAt(3); d.RemoveAt(2); d.RemoveAt(5); d.RemoveAt(2); InterfaceTests.TestReadWriteListGeneric(d, new string[] { "i", "c", "a", "g", "f", "b" }); d.Clear(); d.AddToBack("f"); d.AddToBack("g"); d.AddToFront("e"); d.AddToFront("d"); d.AddToFront("c"); d.AddToFront("b"); d.AddToFront("a"); d.RemoveAt(3); d.RemoveAt(4); d.RemoveAt(4); InterfaceTests.TestReadWriteListGeneric(d, new string[] { "a", "b", "c", "e" }); }
public void RemoveAtExceptions() { Deque <string> d = new Deque <string>(); d.AddToFront("foo"); d.AddToBack("world"); d.AddToFront("hello"); d.AddToBack("elvis"); d.AddToFront("elvis"); d.AddToBack(null); d.AddToFront("cool"); try { d.RemoveAt(-1); Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { d.RemoveAt(7); Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { d.RemoveAt(int.MinValue); Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } try { d.RemoveAt(int.MaxValue); Assert.Fail("should throw"); } catch (Exception e) { Assert.IsTrue(e is ArgumentOutOfRangeException); } }
public void RandomInsertDelete() { const int ITER = 2000, LOOP = 15; Random rand = new Random(13); for (int loop = 0; loop < LOOP; ++loop) { Deque <int> deque = new Deque <int>(); List <int> list = new List <int>(); for (int iter = 0; iter < ITER; ++iter) { //Console.Write("Loop {0}, Iteration {1}: ", loop, iter); if (rand.Next(100) < 45) { // remove an item. if (list.Count > 0) { int index = rand.Next(list.Count); //Console.WriteLine("RemoveAt({0})", index); list.RemoveAt(index); deque.RemoveAt(index); } } else { // Add an item. int item = rand.Next(1, 1000); int index = rand.Next(list.Count + 1); //Console.WriteLine("Insert({0}, {1})", index, item); list.Insert(index, item); deque.Insert(index, item); } //deque.Print(); CheckListAndDeque(list, deque); } InterfaceTests.TestReadWriteList <int>(deque, list.ToArray()); } }
public void RandomAddRemoveFrontBack() { const int ITER = 2000, LOOP = 15; Random rand = new Random(13); for (int loop = 0; loop < LOOP; ++loop) { Deque <int> deque = new Deque <int>(); List <int> list = new List <int>(); for (int iter = 0; iter < ITER; ++iter) { //Console.Write("Loop {0}, Iteration {1}: ", loop, iter); if (rand.Next(100) < 45 && list.Count > 0) { int r = rand.Next(10); if (r < 4) { //Console.WriteLine("RemoveFront()"); int removedList = list[0]; list.RemoveAt(0); int removedDeque = deque.RemoveFromFront(); Assert.AreEqual(removedList, removedDeque); } else if (r < 8) { //Console.WriteLine("RemoveBack()"); int removedList = list[list.Count - 1]; list.RemoveAt(list.Count - 1); int removedDeque = deque.RemoveFromBack(); Assert.AreEqual(removedList, removedDeque); } else { int index = rand.Next(list.Count); //Console.WriteLine("RemoveAt({0})", index); list.RemoveAt(index); deque.RemoveAt(index); } } else { int r = rand.Next(10); int item = rand.Next(1, 1000); if (r < 4) { //Console.WriteLine("AddFront({0})", item); list.Insert(0, item); deque.AddToFront(item); } else if (r < 8) { //Console.WriteLine("AddBack({0})", item); list.Add(item); deque.AddToBack(item); } else { // Add an item. int index = rand.Next(list.Count + 1); //Console.WriteLine("Insert({0}, {1})", index, item); list.Insert(index, item); deque.Insert(index, item); } } //deque.Print(); CheckListAndDeque(list, deque); } InterfaceTests.TestReadWriteList <int>(deque, list.ToArray()); } }