package datastructure.stack.expr;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
public class InfixToPostfixTest {
@Test
public void testConvert() {
{
String expr = "((2+3)*8+5+3)*6";
List<Token> postFix = InfixToPostfix.convert(expr);
String postFixExpr = tokenListToString(postFix);
float postFixExprResult = calculatePostFixExpr(postFixExpr);
Assert.assertEquals(288, postFixExprResult, 0.001);
}
{
String expr = "9+(3-1)*3+10/2";
List<Token> postFix = InfixToPostfix.convert(expr);
String postFixExpr = tokenListToString(postFix);
float postFixExprResult = calculatePostFixExpr(postFixExpr);
Assert.assertEquals(20, postFixExprResult, 0.001);
}
{
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.getValue() + " ");
}
return builder.toString();
}
private float calculatePostFixExpr(String expr) {
PostfixExpr postfixExpr = new PostfixExpr(expr);
return postfixExpr.evaluate();
}
}