package io.crate.operation.operator;
import io.crate.operation.scalar.AbstractScalarFunctionsTest;
import org.junit.Test;
import static io.crate.testing.SymbolMatchers.*;
public class OrOperatorTest extends AbstractScalarFunctionsTest {
@Test
public void testNormalize() throws Exception {
assertNormalize("name or true", isLiteral(true));
assertNormalize("true or name", isLiteral(true));
assertNormalize("false or name", isField("name"));
assertNormalize("name or name", isFunction(OrOperator.NAME));
assertNormalize("true or 1/0", isLiteral(true));
assertNormalize("1/0 or true", isLiteral(true));
}
@Test
public void testEvaluate() throws Exception {
assertEvaluate("true or true", true);
assertEvaluate("false or false", false);
assertEvaluate("true or false", true);
assertEvaluate("false or true", true);
assertEvaluate("true or null", true);
assertEvaluate("null or true", true);
assertEvaluate("false or null", null);
assertEvaluate("null or false", null);
assertEvaluate("null or null", null);
}
}