public void VisitAssignmentReturnsCorrectResult(int y, CalculationVisitor sut)
        {
            var left       = new Variable("x");
            var right      = new Constant(y);
            var assignment = new Assignment(left, right);

            sut.Visit(assignment);
            var expected = y;

            Assert.Equal(expected, sut.Result);
        }
        public void VisitDivisionExpressionReturnsCorrectResult(int x, int y, CalculationVisitor sut)
        {
            var left     = new Constant(x);
            var right    = new Constant(y);
            var division = new DivisionExpression(left, right);

            sut.Visit(division);
            var expected = x / y;

            Assert.Equal(expected, sut.Result);
        }
示例#3
0
        static void Calculate()
        {
            //a=5*b+2
            var expression = new Assignment(new Variable("a"),
                                            new AdditionExpression(new MultiplicationExpression(new Constant(5),
                                                                                                new Variable("b", 2)),
                                                                   new Constant(2)));


            var equationPrintingVisitor = new EquationPrintingVisitor();

            equationPrintingVisitor.Visit(expression);

            var calculationVisitor = new CalculationVisitor();

            calculationVisitor.Visit(expression);

            Console.WriteLine($"Expression: {equationPrintingVisitor.Equation}");
            Console.WriteLine($"The result is: {calculationVisitor.Result}");
        }
 public void VisitConstantReturnsCorrectResult(Constant constant, CalculationVisitor sut)
 {
     sut.Visit(constant);
     Assert.Equal(constant.Value, sut.Result);
 }
 public void VisitVariableReturnsCorrectResult(Variable variable, CalculationVisitor sut)
 {
     sut.Visit(variable);
     Assert.Equal(variable.Value, sut.Result);
 }
 public void SutIsVisitor(CalculationVisitor sut)
 {
     Assert.IsAssignableFrom <Visitor>(sut);
 }