public void TestPush() { var sut = new SungStack <int>(); sut.Push(1); sut.Push(2); sut.Push(3); int[] expected = { 3, 2, 1 }; Assert.True(expected.SequenceEqual(sut.Traverse().ToArray())); }
public void TestPop() { var sut = new SungStack <int>(); sut.Push(1); sut.Push(2); sut.Push(3); var popped = sut.Pop(); Assert.Equal(3, popped); Assert.True(new[] { 2, 1 }.SequenceEqual(sut.Traverse().ToArray())); popped = sut.Pop(); Assert.Equal(2, popped); Assert.True(new[] { 1 }.SequenceEqual(sut.Traverse().ToArray())); popped = sut.Pop(); Assert.Equal(1, popped); Assert.True(new int[] {}.SequenceEqual(sut.Traverse().ToArray())); Assert.Throws <InvalidOperationException>(() => sut.Pop()); }
public void TestPeek() { var sut = new SungStack <int>(); const int itemCount = 3; for (int i = 1; i <= itemCount; i++) { sut.Push(i); Assert.Equal(i, sut.Peek()); } for (int i = itemCount - 1; i >= 0; i--) { sut.Pop(); Assert.Equal(i, sut.Peek()); } // default(int) returns 0 Assert.Equal(0, sut.Peek()); }