@Test
public void test_null_equal_missing() {

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