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); }