public void Stack_Push_Pop_Peek_Count() { var myStack = new MyStack(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Pop(); myStack.Pop().Should().Be(2); myStack.Count().Should().Be(1); }
static Dictionary <char, int> UpdateCounters(string input, Dictionary <char, int> counters) { var chars = new MyStack(); var keys = counters.Keys.ToList(); foreach (var item in input) { if (keys.Contains(item)) { var idx = keys.IndexOf(item); if (idx % 2 == 0) { counters[item]++; chars.Push(item); } else { var idxPre = keys.IndexOf(chars.Last); counters[item]--; if (idx - idxPre == 1) { chars.Pop(); } } } } return(counters); }
public void Stack_Can_Pop_Value() { var myStack = new MyStack(); myStack.Push(1); myStack.Pop().Should().Be(1); myStack.IsEmpty().Should().BeTrue(); }
public void TestStack() { Stack <int> stdStack = new Stack <int>(); // standard queue implemented by .NET MyStack <int> ourStack = new MyStack <int>(); // our manually implemented stack // Test generates 100 random integers and adds to both queues Random r = new Random(); for (int i = 0; i < 100; i++) { int randVal = r.Next(); stdStack.Push(randVal); ourStack.Push(randVal); } // Test reading back half the added integers for (int i = 0; i < 50; i++) { Assert.AreEqual(stdStack.Pop(), ourStack.Pop()); Assert.AreEqual(stdStack.Peek(), ourStack.Peek()); Assert.AreEqual(stdStack.Count, ourStack.Count()); } // Test adding 50 more random integers for (int i = 0; i < 50; i++) { int randVal = r.Next(); stdStack.Push(randVal); ourStack.Push(randVal); } // Test reading back all the remaining values for (int i = 0; i < 100; i++) { Assert.AreEqual(stdStack.Peek(), ourStack.Peek()); Assert.AreEqual(stdStack.Pop(), ourStack.Pop()); Assert.AreEqual(stdStack.Count, ourStack.Count()); } }
throw_exception_if_popped_when_empty() { Assert.Throws <EmptyStackException>(() => stack.Pop()); }