package jetbrick.template.exec.operator;
import jetbrick.template.exec.AbstractJetxTest;
import org.junit.Assert;
import org.junit.Test;
public class EqualsOperatorTest extends AbstractJetxTest {
@Test
public void testTrue() {
Assert.assertEquals("1", eval("${(true)?1:0}"));
Assert.assertEquals("0", eval("${(false)?1:0}"));
Assert.assertEquals("0", eval("${(null)?1:0}"));
Assert.assertEquals("1", eval("${(1)?1:0}"));
Assert.assertEquals("0", eval("${(0)?1:0}"));
Assert.assertEquals("1", eval("${(1.0D)?1:0}"));
Assert.assertEquals("0", eval("${(0.0F)?1:0}"));
Assert.assertEquals("1", eval("${('a')?1:0}"));
Assert.assertEquals("0", eval("${([])?1:0}"));
Assert.assertEquals("0", eval("${({})?1:0}"));
Assert.assertEquals("0", eval("${(a)?1:0}"));
}
@Test
public void testCompare() {
Assert.assertEquals("1", eval("${(0==0)?1:0}"));
Assert.assertEquals("1", eval("${(0D==0.0F)?1:0}"));
Assert.assertEquals("1", eval("${(0D==0L)?1:0}"));
Assert.assertEquals("1", eval("${(1!=0)?1:0}"));
Assert.assertEquals("1", eval("${(1>0d)?1:0}"));
Assert.assertEquals("1", eval("${(1>=1)?1:0}"));
Assert.assertEquals("1", eval("${(1f>=0)?1:0}"));
Assert.assertEquals("1", eval("${(0<1)?1:0}"));
Assert.assertEquals("1", eval("${(0<=1)?1:0}"));
Assert.assertEquals("1", eval("${(0<=0)?1:0}"));
}
@Test
public void testComparable() {
Assert.assertEquals("true", eval("${'b' > 'a'}"));
Assert.assertEquals("true", eval("${'a' < 'b'}"));
Assert.assertEquals("true", eval("${'b' >= 'a'}"));
Assert.assertEquals("true", eval("${'a' >= 'a'}"));
Assert.assertEquals("true", eval("${'a' <= 'b'}"));
Assert.assertEquals("true", eval("${'a' <= 'a'}"));
}
@Test
public void testEquals() {
Assert.assertEquals("true", eval("${null==null}"));
Assert.assertEquals("false", eval("${1==null}"));
Assert.assertEquals("false", eval("${null==1}"));
}
@Test
public void testIdenticallyEquals() {
Assert.assertEquals("true", eval("${null===null}"));
Assert.assertEquals("false", eval("${'a'==='a'}"));
Assert.assertEquals("false", eval("${1===1L}"));
}
@Test
public void testAndOrNot() {
Assert.assertEquals("false", eval("${!true}"));
Assert.assertEquals("true", eval("${!false}"));
Assert.assertEquals("true", eval("${true && true}"));
Assert.assertEquals("false", eval("${true && false}"));
Assert.assertEquals("false", eval("${false && false}"));
Assert.assertEquals("true", eval("${true || true}"));
Assert.assertEquals("true", eval("${true || false}"));
Assert.assertEquals("false", eval("${false || false}"));
}
@Test
public void testAndOrQuickPath() {
Assert.assertEquals("false", eval("${false && [].get(0)}"));
Assert.assertEquals("true", eval("${true || [].get(0)}"));
}
}