Пример #1
0
        public void PostfixEvaluatorTest()
        {
            // 3 + 4 * 5 = 23
            var queue = ShuntingYardAlgorithm.ShuntingYard("3+4*5");

            PostfixEvaluator.EvaluatePostfix(queue).Should().Be(23);

            // 3 * (4 + 5) = 27
            queue = ShuntingYardAlgorithm.ShuntingYard("3*(4+5)");
            PostfixEvaluator.EvaluatePostfix(queue).Should().Be(27);
        }
Пример #2
0
        public void InfixToPostfixTest()
        {
            var queue = ShuntingYardAlgorithm.ShuntingYard("3+2*4/5");

            queue.Dequeue().Should().Be('3');
            queue.Dequeue().Should().Be('2');
            queue.Dequeue().Should().Be('4');
            queue.Dequeue().Should().Be('*');
            queue.Dequeue().Should().Be('5');
            queue.Dequeue().Should().Be('/');
            queue.Dequeue().Should().Be('+');

            queue = ShuntingYardAlgorithm.ShuntingYard("3+4*5");
            queue.Dequeue().Should().Be('3');
            queue.Dequeue().Should().Be('4');
            queue.Dequeue().Should().Be('5');
            queue.Dequeue().Should().Be('*');
            queue.Dequeue().Should().Be('+');

            queue = ShuntingYardAlgorithm.ShuntingYard("3*(4+5)");
            queue.Dequeue().Should().Be('3');
            queue.Dequeue().Should().Be('4');
            queue.Dequeue().Should().Be('5');
            queue.Dequeue().Should().Be('+');
            queue.Dequeue().Should().Be('*');

            queue = ShuntingYardAlgorithm.ShuntingYard("3+4*2/(1-5)^2^3");
            // 3 4 2 × 1 5 − 2 3 ^ ^ ÷ +
            queue.Dequeue().Should().Be('3');
            queue.Dequeue().Should().Be('4');
            queue.Dequeue().Should().Be('2');
            queue.Dequeue().Should().Be('*');
            queue.Dequeue().Should().Be('1');
            queue.Dequeue().Should().Be('5');
            queue.Dequeue().Should().Be('-');
            queue.Dequeue().Should().Be('2');
            queue.Dequeue().Should().Be('3');
            queue.Dequeue().Should().Be('^');
            queue.Dequeue().Should().Be('^');
            queue.Dequeue().Should().Be('/');
            queue.Dequeue().Should().Be('+');

            queue = ShuntingYardAlgorithm.ShuntingYard("3-2+1");
            queue.Dequeue().Should().Be('3');
            queue.Dequeue().Should().Be('2');
            queue.Dequeue().Should().Be('-');
            queue.Dequeue().Should().Be('1');
            queue.Dequeue().Should().Be('+');
        }