Beispiel #1
0
        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);
        }
Beispiel #2
0
            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);
            }
Beispiel #3
0
        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());
            }
        }
Beispiel #5
0
 throw_exception_if_popped_when_empty()
 {
     Assert.Throws <EmptyStackException>(() => stack.Pop());
 }