Plex-FAWE/src/test/java/com/sk89q/worldedit/expression/ExpressionTest.java

67 lines
2.0 KiB
Java
Raw Normal View History

2011-10-02 10:29:56 +00:00
package com.sk89q.worldedit.expression;
import static org.junit.Assert.*;
import static java.lang.Math.*;
import org.junit.*;
import com.sk89q.worldedit.expression.lexer.LexerException;
import com.sk89q.worldedit.expression.parser.ParserException;
public class ExpressionTest {
@Test
public void testEvaluate() throws Exception {
// check
assertEquals(1-2+3, simpleEval("1-2+3"), 0);
// check unary ops
assertEquals(2+ +4, simpleEval("2++4"), 0);
assertEquals(2- -4, simpleEval("2--4"), 0);
assertEquals(2*-4, simpleEval("2*-4"), 0);
// check functions
assertEquals(sin(5), simpleEval("sin(5)"), 0);
assertEquals(atan2(3,4), simpleEval("atan2(3,4)"), 0);
// check variables
assertEquals(8, Expression.compile("foo+bar", "foo", "bar").evaluate(5, 3), 0);
}
@Test
public void testErrors() throws ExpressionException {
// test lexer errors
try {
Expression.compile("{");
fail("Error expected");
} catch (LexerException e) {
assertEquals("Error position", 0, e.getPosition());
}
// test parser errors
try {
Expression.compile("x");
fail("Error expected");
} catch (ParserException e) {
assertEquals("Error position", 0, e.getPosition());
}
try {
Expression.compile("x()");
fail("Error expected");
} catch (ParserException e) {
assertEquals("Error position", 0, e.getPosition());
}
try {
Expression.compile("(");
fail("Error expected");
} catch (ParserException e) {}
try {
Expression.compile("x(");
fail("Error expected");
} catch (ParserException e) {}
}
private double simpleEval(String expression) throws Exception {
return Expression.compile(expression).evaluate();
}
}