@Test
public void test_null_or_missing() {

  FunctionExpression or = dsl.or(DSL.ref(BOOL_TYPE_MISSING_VALUE_FIELD, BOOLEAN),
      DSL.ref(BOOL_TYPE_MISSING_VALUE_FIELD, BOOLEAN));
  assertEquals(BOOLEAN, or.type());
  assertEquals(LITERAL_MISSING, or.valueOf(valueEnv()));
  or =
      dsl.or(DSL.ref(BOOL_TYPE_NULL_VALUE_FIELD, BOOLEAN),
          DSL.ref(BOOL_TYPE_NULL_VALUE_FIELD, BOOLEAN));
  assertEquals(BOOLEAN, or.type());
  assertEquals(LITERAL_NULL, or.valueOf(valueEnv()));
  or = dsl.or(DSL.ref(BOOL_TYPE_NULL_VALUE_FIELD, BOOLEAN),
      DSL.ref(BOOL_TYPE_MISSING_VALUE_FIELD, BOOLEAN));
  assertEquals(BOOLEAN, or.type());
  assertEquals(LITERAL_NULL, or.valueOf(valueEnv()));
  or = dsl.or(DSL.ref(BOOL_TYPE_MISSING_VALUE_FIELD, BOOLEAN),
      DSL.ref(BOOL_TYPE_NULL_VALUE_FIELD, BOOLEAN));
  assertEquals(BOOLEAN, or.type());
  assertEquals(LITERAL_NULL, or.valueOf(valueEnv()));
}