from __future__ import annotations
from sparkless.testing import get_imports
_imports = get_imports()
F = _imports.F
def test_column_has_eq_null_safe(spark) -> None:
c = F.col("a")
assert hasattr(c, "eqNullSafe") or hasattr(c, "eq_null_safe")
def test_filter_eq_null_safe_lit_none_returns_null_row(spark) -> None:
data = [{"a": 1}, {"a": None}, {"a": 3}]
df = spark.createDataFrame(data, ["a"])
col_a = F.col("a")
eq_safe = getattr(col_a, "eqNullSafe", None) or getattr(col_a, "eq_null_safe")
out = df.filter(eq_safe(F.lit(None))).collect()
assert len(out) == 1
assert out[0]["a"] is None
def test_filter_eq_null_safe_column_both_null_true(spark) -> None:
data = [
{"a": 1, "b": 2},
{"a": None, "b": None},
{"a": 3, "b": 4},
]
df = spark.createDataFrame(data, ["a", "b"])
col_a = F.col("a")
eq_safe = getattr(col_a, "eqNullSafe", None) or getattr(col_a, "eq_null_safe")
out = df.filter(eq_safe(F.col("b"))).collect()
assert len(out) == 1
assert out[0]["a"] is None and out[0]["b"] is None