示例#1
0
        private IntegerHelper SetUpHelper(IInterpreterInteger parent)
        {
            IntegerHelper integerHelper = new IntegerHelper();

            integerHelper.SetInterpreter(parent);
            return(integerHelper);
        }
示例#2
0
        public void LiteralInteger_GivenInteger_ReturnsIntegerLiteral(int input, int expected)
        {
            IntegerLiteralExpression intLit = new IntegerLiteralExpression(input.ToString(), 1, 1);
            IInterpreterInteger      parent = Substitute.For <IInterpreterInteger>();

            parent.DispatchInt(intLit, Arg.Any <List <object> >()).Returns(input);
            IntegerHelper integerHelper = SetUpHelper(parent);

            int res = integerHelper.LiteralInteger(intLit, new List <object>());

            Assert.AreEqual(expected, res);
        }
示例#3
0
        public void PowerInteger_TwoIntsButNegativeExponent_ThrowsException(int input1, int input2)
        {
            IntegerLiteralExpression realLit1 = new IntegerLiteralExpression(input1, 1, 1);
            IntegerLiteralExpression realLit2 = new IntegerLiteralExpression(input2, 2, 2);
            PowerExpression          powExpr  = new PowerExpression(realLit1, realLit2, 1, 1);
            IInterpreterInteger      parent   = Substitute.For <IInterpreterInteger>();

            parent.DispatchInt(realLit1, Arg.Any <List <object> >()).Returns(input1);
            parent.DispatchInt(realLit2, Arg.Any <List <object> >()).Returns(input2);
            IntegerHelper realHelper = SetUpHelper(parent);

            int res = realHelper.PowerInteger(powExpr, new List <object>());
        }
示例#4
0
        public void MultiplicationInteger_TwoIntegers_ReturnsCorrectResultOfMultiplication(int input1, int input2, int expected)
        {
            IntegerLiteralExpression intLit1  = new IntegerLiteralExpression(input1.ToString(), 1, 1);
            IntegerLiteralExpression intLit2  = new IntegerLiteralExpression(input2.ToString(), 2, 2);
            MultiplicationExpression multExpr = new MultiplicationExpression(intLit1, intLit2, 1, 1);
            IInterpreterInteger      parent   = Substitute.For <IInterpreterInteger>();

            parent.DispatchInt(intLit1, Arg.Any <List <object> >()).Returns(input1);
            parent.DispatchInt(intLit2, Arg.Any <List <object> >()).Returns(input2);
            IntegerHelper integerHelper = SetUpHelper(parent);

            int res = integerHelper.MultiplicationInteger(multExpr, new List <object>());

            Assert.AreEqual(expected, res);
        }
示例#5
0
        public void PowerInteger_TwoInts_ReturnsCorrectResult(int input1, int input2, int expected)
        {
            IntegerLiteralExpression realLit1 = new IntegerLiteralExpression(input1, 1, 1);
            IntegerLiteralExpression realLit2 = new IntegerLiteralExpression(input2, 2, 2);
            PowerExpression          powExpr  = new PowerExpression(realLit1, realLit2, 1, 1);
            IInterpreterInteger      parent   = Substitute.For <IInterpreterInteger>();

            parent.DispatchInt(realLit1, Arg.Any <List <object> >()).Returns(input1);
            parent.DispatchInt(realLit2, Arg.Any <List <object> >()).Returns(input2);
            IntegerHelper realHelper = SetUpHelper(parent);

            int res = realHelper.PowerInteger(powExpr, new List <object>());

            Assert.AreEqual(expected, res);
        }
示例#6
0
        public void AbsoluteInteger_SetWithEmptyList_ReturnsLength()
        {
            IdentifierExpression    intLit  = new IdentifierExpression("", 1, 1);
            AbsoluteValueExpression absExpr = new AbsoluteValueExpression(intLit, 1, 1);

            absExpr.Type = TypeEnum.Set;
            IInterpreterInteger parent = Substitute.For <IInterpreterInteger>();

            parent.DispatchSet(intLit, Arg.Any <List <object> >()).Returns(new Set(new List <Element>()));
            IntegerHelper integerHelper = SetUpHelper(parent);

            int res = integerHelper.AbsoluteInteger(absExpr, new List <object>());

            Assert.AreEqual(0, res);
        }
示例#7
0
        public void AbsoluteInteger_Integer_ReturnsAbsoluteValue(int input, int expected)
        {
            IntegerLiteralExpression intLit  = new IntegerLiteralExpression(input.ToString(), 1, 1);
            AbsoluteValueExpression  absExpr = new AbsoluteValueExpression(intLit, 1, 1);

            absExpr.Type = TypeEnum.Integer;
            IInterpreterInteger parent = Substitute.For <IInterpreterInteger>();

            parent.DispatchInt(intLit, Arg.Any <List <object> >()).Returns(input);
            IntegerHelper integerHelper = SetUpHelper(parent);

            int res = integerHelper.AbsoluteInteger(absExpr, new List <object>());

            Assert.AreEqual(expected, res);
        }
示例#8
0
        public void NegativeInteger_Integer_CorrectNegativeValue(int input, int expected)
        {
            IntegerLiteralExpression intLitExpr = new IntegerLiteralExpression(input, 0, 0);

            NegativeExpression negExpr = new NegativeExpression(new List <ExpressionNode>()
            {
                intLitExpr
            }, 0, 0);

            IInterpreterInteger parent = Substitute.For <IInterpreterInteger>();

            parent.DispatchInt(intLitExpr, Arg.Any <List <object> >()).Returns(input);
            IntegerHelper integerHelper = SetUpHelper(parent);

            double res = integerHelper.NegativeInteger(negExpr, new List <object>());

            Assert.AreEqual(expected, res);
        }
示例#9
0
 public void SetInterpreter(IInterpreterInteger interpreter)
 {
     _interpreter = interpreter;
 }