1 package net.sf.openrocket.util;
3 import static org.junit.Assert.*;
7 public class ExpressionParserTest {
9 private static final double EPS = 1e-10;
11 private ExpressionParser parser = new ExpressionParser();
14 public void testPlainNumber() throws InvalidExpressionException {
15 assertEquals(1.0, parser.parse("1"), EPS);
16 assertEquals(1.0, parser.parse("\t 1 "), EPS);
17 assertEquals(0.9, parser.parse(".9"), EPS);
18 assertEquals(1.0, parser.parse("1."), EPS);
19 assertEquals(1.2, parser.parse("1.2"), EPS);
20 assertEquals(1.2, parser.parse("01.200"), EPS);
25 public void testDecimalComma() throws InvalidExpressionException {
26 assertEquals(1.0, parser.parse("1,"), EPS);
27 assertEquals(1.2, parser.parse("1,2"), EPS);
28 assertEquals(1.2, parser.parse("01,200"), EPS);
29 assertEquals(0.9, parser.parse(",9"), EPS);
34 public void testSimpleExpression() throws InvalidExpressionException {
35 assertEquals(3.0, parser.parse("1+2"), EPS);
36 assertEquals(6.0, parser.parse("1+2.5*2"), EPS);
37 assertEquals(7.0, parser.parse("(1+2.5) * 2"), EPS);
38 assertEquals(1.0 + 2.0 / 3.0, parser.parse("1+2/3"), EPS);
42 public void testFraction() throws InvalidExpressionException {
43 assertEquals(1.5, parser.parse("1 1/2"), EPS);
44 assertEquals(1.5, parser.parse(" 1 1 / 2"), EPS);
45 assertEquals(2.0 + 3.0 / 7.0, parser.parse("1 + 1 3/7"), EPS);
46 assertEquals(3.0, parser.parse("1 1/2 * 2"), EPS);
50 public void testInvalidExpression() {
52 expectInvalid("1+2/");
54 expectInvalid("12 2.5");
55 expectInvalid("1 2.5/4");
56 expectInvalid("1. 2");
57 expectInvalid("1 .2");
60 private void expectInvalid(String exp) {
62 double value = parser.parse(exp);
63 fail("Expression '" + exp + "' evaluated to " + value + ", expected failure");
64 } catch (InvalidExpressionException e) {