package com.aaront.execrise.basic.expr;
import com.aaront.exercise.basic.expr.InfixToPostfix;
import com.aaront.exercise.basic.expr.PostfixExpr;
import com.aaront.exercise.basic.expr.Token;
import org.junit.Assert;
import org.junit.Test;
import java.util.List;
public class InfixToPostfixTest {
@Test
public void testConvert() {
{
String expr = "10-2*3+50";
List<Token> postFix = InfixToPostfix.convert(expr);
String postFixExpr = tokenListToString(postFix);
float postFixExprResult = calculatePostFixExpr(postFixExpr);
Assert.assertEquals(54, postFixExprResult, 0.001);
}
}
private String tokenListToString(List<Token> tokenList) {
StringBuilder builder = new StringBuilder();
for (Token token : tokenList) {
builder.append(token + " ");
}
return builder.toString();
}
private float calculatePostFixExpr(String expr) {
PostfixExpr postfixExpr = new PostfixExpr(expr);
return postfixExpr.evaluate();
}
}