public void Simple_calculation()
        {
            if (Directory.Exists(PATH))
            {
                Directory.Delete(PATH, true);
            }
            var sut = new MessageHandling(PATH);

            sut.Handle(new ExpandNumber('2'));

            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Addition
            });
            var rNumber = sut.Handle(new Number());

            Assert.Equal(0, rNumber.Number);
            var rResult = sut.Handle(new Result());

            Assert.Equal(2, rResult.Number);

            sut.Handle(new ExpandNumber('3'));

            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Multiplication
            });
            rNumber = sut.Handle(new Number());
            Assert.Equal(0, rNumber.Number);
            rResult = sut.Handle(new Result());
            Assert.Equal(5, rResult.Number);
        }
        public void Div_by_zero()
        {
            if (Directory.Exists(PATH))
            {
                Directory.Delete(PATH, true);
            }
            var sut = new MessageHandling(PATH);

            // 6/0 2=(3)
            sut.Handle(new ExpandNumber('6'));
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Division
            });
            sut.Handle(new ExpandNumber('0'));
            var cResult = sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Equals
            });

            Assert.IsType <Failure>(cResult);

            sut.Handle(new ExpandNumber('2'));
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Equals
            });
            var rResult = sut.Handle(new Result());

            Assert.Equal(3, rResult.Number);
        }
        public void Equals_followed_by_number()
        {
            if (Directory.Exists(PATH))
            {
                Directory.Delete(PATH, true);
            }
            var sut = new MessageHandling(PATH);

            // 2+3=(5)4*5=(20)
            sut.Handle(new ExpandNumber('2'));
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Addition
            });
            sut.Handle(new ExpandNumber('3'));
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Equals
            });
            var rResult = sut.Handle(new Result());

            Assert.Equal(5, rResult.Number);

            sut.Handle(new ExpandNumber('4'));
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Multiplication
            });
            sut.Handle(new ExpandNumber('5'));
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Equals
            });

            rResult = sut.Handle(new Result());
            Assert.Equal(20, rResult.Number);
        }
        public void Equals_followed_by_op()
        {
            if (Directory.Exists(PATH))
            {
                Directory.Delete(PATH, true);
            }
            var sut = new MessageHandling(PATH);

            // 2+3=(5)-1=(4)
            sut.Handle(new ExpandNumber('2'));
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Addition
            });
            sut.Handle(new ExpandNumber('3'));
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Equals
            });
            var rResult = sut.Handle(new Result());

            Assert.Equal(5, rResult.Number);

            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Subtraction
            });
            sut.Handle(new ExpandNumber('1'));
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Equals
            });
            rResult = sut.Handle(new Result());
            Assert.Equal(4, rResult.Number);
        }
        public void Number_expansion()
        {
            if (Directory.Exists(PATH))
            {
                Directory.Delete(PATH, true);
            }
            var sut = new MessageHandling(PATH);

            sut.Handle(new ExpandNumber('3'));
            sut.Handle(new ExpandNumber('1'));
            sut.Handle(new ExpandNumber('4'));

            var rNumber = sut.Handle(new Number());

            Assert.Equal(314, rNumber.Number);
        }
        public void Op_replacement()
        {
            if (Directory.Exists(PATH))
            {
                Directory.Delete(PATH, true);
            }
            var sut = new MessageHandling(PATH);

            // 2+*3=(6)
            sut.Handle(new ExpandNumber('2'));
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Addition
            });
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Multiplication
            });
            sut.Handle(new ExpandNumber('3'));
            sut.Handle(new AppendOperator {
                Op = AppendOperator.Operators.Equals
            });
            var rResult = sut.Handle(new Result());

            Assert.Equal(6, rResult.Number);
        }