示例#1
0
    public static double GetResult(char op, double number1, double number2)
    {
        OperatorReguler opReguler = null;

        switch (op)
        {
        case ADDITION:
            AddOperator add = new AddOperator(number1, number2);
            opReguler = add;
            break;

        case SUBTRACK:
            SubOperator sub = new SubOperator(number2, number1);
            opReguler = sub;
            break;

        case MULTIPLY:
            MulOperator mul = new MulOperator(number1, number2);
            opReguler = mul;
            break;

        case DIVISION:
            DivOperator div = new DivOperator(number2, number1);
            opReguler = div;
            break;
        }

        return(opReguler.GetResult());
    }
        public void SubOperator_PrecedenceSetCorrectly()
        {
            // Arrange
            var expected = 1;
            var sut      = new SubOperator();

            // Act
            var actual = sut.Precedence;

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TakesPrecedenceBoostIntoAccount()
        {
            // Arrange
            var precedenceBoost = 7;
            var expected        = 8;
            var sut             = new SubOperator(precedenceBoost);

            // Act
            var actual = sut.Precedence;

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void SubtractionOperator_ReturnsDifference()
        {
            // Arrange
            var operand1 = new Operand(20);
            var operand2 = new Operand(7);
            var expected = 13;

            // Act
            var sut    = new SubOperator();
            var actual = sut.Compute(operand1, operand2);

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void FindOperationCanHandleNegativeNumbers()
        {
            // Arrange
            var op       = new SubOperator();
            var rOperand = new Operand(1);
            var elements = new Element[]
            {
                op, rOperand
            };
            var sut = new ElementList(elements);

            // Act
            var result = sut.FindOperation();

            // Assert
            Assert.AreEqual(0, result.LOperand.Value);
            Assert.AreEqual(op, result.Op);
            Assert.AreEqual(rOperand, result.ROperand);
        }
        public void ReplaceOperationCanHandleNegativeNumbers()
        {
            // Arrange
            var op         = new SubOperator();
            var rOperand   = new Operand(1);
            var newOperand = new Operand(-1);
            var elements   = new Element[]
            {
                op, rOperand
            };
            var sut       = new ElementList(elements);
            var operation = sut.FindOperation();

            // Act
            sut.ReplaceOperation(operation, newOperand);

            // Assert
            Assert.AreEqual(-1, sut.First.Value);
            Assert.IsNull(sut.FindOperation());
        }
        public void FindOperationCanHandleTwoSuccessiveOperators()
        {
            // Arrange
            var opd1     = new Operand(1);
            var op1      = new AddOperator();
            var op2      = new SubOperator(10);
            var opd2     = new Operand(2);
            var elements = new Element[]
            {
                opd1, op1, op2, opd2
            };
            var sut = new ElementList(elements);

            // Act
            var result = sut.FindOperation();

            // Assert
            Assert.AreEqual(0, result.LOperand.Value);
            Assert.AreEqual(op2, result.Op);
            Assert.AreEqual(opd2, result.ROperand);
        }