[Test] public void testShove() { GenericStack <string> stringStack = new GenericStack <string>(); stringStack.Shove("value 1", 0); Assert.AreEqual(1, stringStack.Count); Assert.AreEqual("value 1", stringStack.DeepPeek(0)); Assert.AreEqual("value 1", stringStack.Peek(0)); stringStack.Shove("value 4", 0); Assert.AreEqual(2, stringStack.Count); Assert.AreEqual("value 1", stringStack.DeepPeek(0)); Assert.AreEqual("value 4", stringStack.Peek(0)); stringStack.Pop(); stringStack.Shove("value 2", 1); Assert.AreEqual(2, stringStack.Count); // Assert.AreEqual("value 2", stringStack.DeepPeek(0)); // Assert.AreEqual("value 1", stringStack.DeepPeek(1)); // Assert.AreEqual("[value 1 value 2]", stringStack.ToString()); Assert.AreEqual("value 2", stringStack.DeepPeek(1)); Assert.AreEqual("value 1", stringStack.DeepPeek(0)); Assert.AreEqual(2, stringStack.Count); stringStack.Shove("value 3", 1); Assert.AreEqual(3, stringStack.Count); // Assert.AreEqual("[value 1 value 3 value 2]", stringStack.ToString()); Assert.AreEqual("value 2", stringStack.DeepPeek(2)); Assert.AreEqual("value 3", stringStack.DeepPeek(1)); Assert.AreEqual("value 1", stringStack.DeepPeek(0)); Assert.AreEqual("value 2", stringStack.Peek(0)); Assert.AreEqual("value 3", stringStack.Peek(1)); Assert.AreEqual("value 1", stringStack.Peek(2)); }