@Test public void testNestedExpressions() { AttributeCompiler builder = new AttributeCompiler("(3 + (2)) - 10/5"); Source source = builder.compile(); assertEquals("((3+2)-(10/5))", source.getSource()); assertEquals((3 + (2)) - 10 / 5, ((3 + 2) - (10 / 5))); builder = new AttributeCompiler("(3 - (2)) - 10/5"); source = builder.compile(); assertEquals("((3-2)-(10/5))", source.getSource()); assertEquals((3 - (2)) - 10 / 5, ((3 - 2) - (10 / 5))); builder = new AttributeCompiler("(3 - (2+7)) - 10/5"); source = builder.compile(); assertEquals("((3-(2+7))-(10/5))", source.getSource()); assertEquals((3 - (2 + 7)) - 10 / 5, ((3 - (2 + 7)) - (10 / 5))); assertEquals(-8, ((3 - (2 + 7)) - (10 / 5))); builder = new AttributeCompiler("(3 - (2+7)) - 10/(5-3)"); source = builder.compile(); assertEquals("((3-(2+7))-(10/(5-3)))", source.getSource()); assertEquals((3 - (2 + 7)) - 10 / (5 - 3), ((3 - (2 + 7)) - (10 / (5 - 3)))); builder = new AttributeCompiler("(modelName.num - (2*(7-1))) - 10/(modelName.num-3)"); source = builder.compile(); List<ModelSource> modelSourceList = new ArrayList<>(); source.getModelSource(modelSourceList); for (ModelSource modelSource : modelSourceList) modelSource.setGetter("getNum"); assertEquals( "((scope.modelName.getNum()-(2*(7-1)))-(10/(scope.modelName.getNum()-3)))", source.getSource()); }