public void AlterationTest()
        {
            // Create inital combination
            ExpressionInt expression = _expression1.Combine(_expression2, ExpressionOperator.Plus) as ExpressionInt;

            Assert.AreEqual(expression.Result, 3);

            // Alter combined object
            _expression2 = _expression2.Combine(_expression3, ExpressionOperator.Plus) as ExpressionInt;
            Assert.AreEqual(expression.Result, 3);
        }
        public void MultiplyTest()
        {
            ExpressionInt expression = _expression1.Combine(_expression2, ExpressionOperator.Multiply) as ExpressionInt;

            // 1 * 2
            Assert.AreEqual(expression.Result, 2);

            expression = expression.Combine(_expression3, ExpressionOperator.Multiply) as ExpressionInt;

            // 1 * 2 * 3
            Assert.AreEqual(expression.Result, 6);
        }
        public void DivideTest()
        {
            ExpressionInt expression = _expression1.Combine(_expression2, ExpressionOperator.Divide) as ExpressionInt;

            // 1 / 2
            Assert.AreEqual(expression.Result, 0);

            expression = expression.Combine(_expression3, ExpressionOperator.Divide) as ExpressionInt;

            // (1 / 2) / 3
            Assert.AreEqual(expression.Result, 0);
        }
        public void MinusTest()
        {
            ExpressionInt expression = _expression1.Combine(_expression2, ExpressionOperator.Minus) as ExpressionInt;

            // 1 - 2
            Assert.AreEqual(expression.Result, -1);

            expression = expression.Combine(_expression3, ExpressionOperator.Minus) as ExpressionInt;

            // 1 - 2 - 3
            Assert.AreEqual(expression.Result, -4);
        }
        public void PlusTest()
        {
            ExpressionInt expression = _expression1.Combine(_expression2, ExpressionOperator.Plus) as ExpressionInt;

            // 1 + 2
            Assert.AreEqual(expression.Result, 3);

            expression = expression.Combine(_expression3, ExpressionOperator.Plus) as ExpressionInt;

            // 1 + 2 + 3
            Assert.AreEqual(expression.Result, 6);
        }
 public void Initialize()
 {
     _expression1 = new ExpressionInt(new string[0], () => 1);
     _expression2 = new ExpressionInt(new string[0], () => 2);
     _expression3 = new ExpressionInt(new string[0], () => 3);
 }
        public void DoubleToIntCastTest()
        {
            ExpressionInt expression = _expression1;

            Assert.AreEqual(expression.Result, 1);
        }