package jetbrick.template.exec.operator;
import jetbrick.template.exec.AbstractJetxTest;
import org.junit.Assert;
import org.junit.Test;
public class BinaryOperatorTest extends AbstractJetxTest {
@Test
public void testPlus() {
Assert.assertEquals("3", eval("${1+2}"));
Assert.assertEquals("3", eval("${1+2L}"));
Assert.assertEquals("3.1", eval("${1+2.1f}"));
Assert.assertEquals("3.1", eval("${1+2.1d}"));
}
@Test
public void testMinus() {
Assert.assertEquals("1", eval("${2-1}"));
Assert.assertEquals("1", eval("${2L-1}"));
Assert.assertEquals("0.9", eval("${2-1.1f}"));
Assert.assertEquals("0.9", eval("${2-1.1f}"));
}
@Test
public void testMul() {
Assert.assertEquals("6", eval("${2*3}"));
Assert.assertEquals("6", eval("${2*3L}"));
Assert.assertEquals("6.2", eval("${2*3.1f}"));
Assert.assertEquals("6.2", eval("${2*3.1d}"));
}
@Test
public void testDiv() {
Assert.assertEquals("1", eval("${6/4}"));
Assert.assertEquals("1", eval("${6/4L}"));
Assert.assertEquals("1.5", eval("${6/4f}"));
Assert.assertEquals("1.5", eval("${6/4d}"));
}
@Test
public void testMod() {
Assert.assertEquals("1", eval("${3%2}"));
Assert.assertEquals("1", eval("${3%2L}"));
Assert.assertEquals("1.0", eval("${3%2f}"));
Assert.assertEquals("1.0", eval("${3%2d}"));
}
@Test
public void testArithmetic() {
Assert.assertEquals("7.2", eval("${1+2*3.1}"));
Assert.assertEquals("2.2", eval("${1.1+1.1}"));
Assert.assertEquals("-10.2", eval("${1+2*(3-4)*5.6}"));
}
@Test
public void testStringAdd() {
Assert.assertEquals("a1", eval("${'a'+1}"));
Assert.assertEquals("1a", eval("${1+'a'}"));
Assert.assertEquals("12", eval("${'1'+'2'}"));
Assert.assertEquals("a", eval("${'a'+null}"));
Assert.assertEquals("a", eval("${null+'a'}"));
}
@Test
public void testInstanceOf() {
Assert.assertEquals("true", eval("${'a' instanceof String}"));
Assert.assertEquals("true", eval("${1 instanceof Number}"));
Assert.assertEquals("false", eval("${'a' instanceof Number}"));
}
@Test
public void testNullAsDefault() {
Assert.assertEquals("0", eval("${a ?! 0}"));
Assert.assertEquals("0", eval("${a.b.c ?! 0}"));
Assert.assertEquals("0", eval("${a.b() ?! 0}"));
Assert.assertEquals("0", eval("${a[0] ?! 0}"));
}
}