package org.araqne.logdb.query.expr; import static org.junit.Assert.*; import java.util.HashMap; import org.araqne.logdb.Row; import org.junit.Test; public class AndOrTest { @Test public void simpleAndTest() { Expression expr = FunctionUtil.parseExpr("a==1 and b"); HashMap<String, Object> row = new HashMap<String, Object>(); assertFalse(Boolean.class.cast(expr.eval(new Row(row)))); row.put("b", 1); assertFalse(Boolean.class.cast(expr.eval(new Row(row)))); row.put("a", 1); assertTrue(Boolean.class.cast(expr.eval(new Row(row)))); row.put("a", 2); assertFalse(Boolean.class.cast(expr.eval(new Row(row)))); } @Test public void simpleOrTest() { Expression expr = FunctionUtil.parseExpr("a==1 or b"); HashMap<String, Object> row = new HashMap<String, Object>(); assertFalse(Boolean.class.cast(expr.eval(new Row(row)))); row.put("b", 1); assertTrue(Boolean.class.cast(expr.eval(new Row(row)))); row.put("a", 1); assertTrue(Boolean.class.cast(expr.eval(new Row(row)))); row.put("a", 2); assertTrue(Boolean.class.cast(expr.eval(new Row(row)))); row.remove("b"); assertFalse(Boolean.class.cast(expr.eval(new Row(row)))); } @Test public void longExpressionTest() { { Expression expr = FunctionUtil.parseExpr("true or true or true or true"); assertTrue(Boolean.class.cast(expr.eval(null))); } { Expression expr = FunctionUtil.parseExpr("true or false or true or true"); assertTrue(Boolean.class.cast(expr.eval(null))); } { Expression expr = FunctionUtil.parseExpr("false or false or false or true"); assertTrue(Boolean.class.cast(expr.eval(null))); } { Expression expr = FunctionUtil.parseExpr("false or false or false or false"); assertFalse(Boolean.class.cast(expr.eval(null))); } { Expression expr = FunctionUtil.parseExpr("true and false and true and true"); assertFalse(Boolean.class.cast(expr.eval(null))); } { Expression expr = FunctionUtil.parseExpr("false and false and false and true"); assertFalse(Boolean.class.cast(expr.eval(null))); } { Expression expr = FunctionUtil.parseExpr("false and false and false and false"); assertFalse(Boolean.class.cast(expr.eval(null))); } { Expression expr = FunctionUtil.parseExpr("true and true and true and true"); assertTrue(Boolean.class.cast(expr.eval(null))); } } }