Package com.marakana.calculator.test

Source Code of com.marakana.calculator.test.CalculatorTest

package com.marakana.calculator.test;

import static org.junit.Assert.*;

import java.util.Stack;

import org.junit.Test;

import com.marakana.calculator.Calculator;
import com.marakana.calculator.Operator;
import com.marakana.calculator.expressions.Expression;
import com.marakana.calculator.expressions.NumberExpression;
import com.marakana.calculator.expressions.OperationExpression;

public class CalculatorTest {

  @Test
  public void handleNumberMustPushNumber() {
    Stack<Expression> stack = new Stack<Expression>();
    assertTrue(Calculator.handleNumber("5", stack));
    assertEquals(new NumberExpression(5), stack.pop());
  }

  @Test
  public void handleNumberMustNotPushGarbage() {
    Stack<Expression> stack = new Stack<Expression>();
    assertFalse(Calculator.handleNumber("garbage", stack));
    assertTrue(stack.isEmpty());
  }

  @Test
  public void handleOperatorMustPerformOperation() {
    Stack<Expression> stack = new Stack<Expression>();
    stack.push(new NumberExpression(3));
    stack.push(new NumberExpression(4));
    assertTrue(Calculator.handleOperator("*", stack));
    assertEquals(new OperationExpression(Operator.MULTIPLY,
        new NumberExpression(3), new NumberExpression(4)), stack.pop());
  }

  @Test
  public void calculatorMustEvaluateExpressionCorrectly() {
    assertEquals(-4, Calculator.parse("1 2 3 + -").getValue());
  }

}
TOP

Related Classes of com.marakana.calculator.test.CalculatorTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.