package io.crate.operation.operator;
import io.crate.operation.scalar.AbstractScalarFunctionsTest;
import org.junit.Test;
import static io.crate.testing.SymbolMatchers.isField;
import static io.crate.testing.SymbolMatchers.isLiteral;
public class AndOperatorTest extends AbstractScalarFunctionsTest {
@Test
public void testNormalizeBooleanTrueAndNonLiteral() throws Exception {
assertNormalize("is_awesome and true", isField("is_awesome"));
}
@Test
public void testNormalizeBooleanFalseAndNonLiteral() throws Exception {
assertNormalize("is_awesome and false", isLiteral(false));
}
@Test
public void testNormalizeLiteralAndLiteral() throws Exception {
assertNormalize("true and true", isLiteral(true));
}
@Test
public void testNormalizeLiteralAndLiteralFalse() throws Exception {
assertNormalize("true and false", isLiteral(false));
}
@Test
public void testEvaluateAndOperator() {
assertEvaluate("true and true", true);
assertEvaluate("false and false", false);
assertEvaluate("true and false", false);
assertEvaluate("false and true", false);
assertEvaluate("true and null", null);
assertEvaluate("null and true", null);
assertEvaluate("false and null", false);
assertEvaluate("null and false", false);
assertEvaluate("null and null", null);
}
}