Exemple #1
0
        public void ShouldApplyOperatorSuccefully()
        {
            CalculatorContainer container = new CalculatorContainer();
            CalculatorExecutor  executor  = new CalculatorExecutor();

            container.PushItem(5);
            container.PushItem(7);
            container.PushItem(8);
            executor.ApplyOperator(container, "+");
            Assert.AreEqual("5;15", container.PrettyDisplay());
            container.PushItem(10);
            executor.ApplyOperator(container, "-");
            Assert.AreEqual("5;-5", container.PrettyDisplay());
            executor.ApplyOperator(container, "*");
            Assert.AreEqual("-25", container.PrettyDisplay());
        }
Exemple #2
0
        public void ShouldApplyOperatorRaiseExceptionWhenOperatorInvalid()
        {
            CalculatorContainer container = new CalculatorContainer();
            CalculatorExecutor  executor  = new CalculatorExecutor();

            container.PushItem(5);
            container.PushItem(5);
            container.PushItem(5);

            InvalidOperationException ex = Assert.Throws <InvalidOperationException>(() => executor.ApplyOperator(container, ":"));

            Assert.That(ex.Message, Is.EqualTo("The symbol ':' is not recognised as a valid operator. Accepted operators are: (+, -, *, /)"));
        }
Exemple #3
0
        public void ShouldApplyOperatorRaiseExceptionWhenStackEmpty()
        {
            CalculatorContainer container = new CalculatorContainer();
            CalculatorExecutor  executor  = new CalculatorExecutor();

            container.PushItem(5);

            InvalidOperationException ex = Assert.Throws <InvalidOperationException>(() => executor.ApplyOperator(container, "+"));

            Assert.That(ex.Message, Is.EqualTo("The stack must have at least two items to apply an operator"));
        }