from __future__ import annotations
from tests.fixtures.spark_imports import get_spark_imports
_imports = get_spark_imports()
F = _imports.F
def test_empty_create_map_collects_as_dict(spark) -> None:
df = spark.createDataFrame([(1,), (2,)], ["id"])
out = df.withColumn("m", F.create_map())
rows = out.collect()
assert len(rows) == 2
for r in rows:
m = r["m"]
assert isinstance(m, dict), f"expected dict, got {type(m)}"
assert m == {}, f"expected {{}}, got {m}"
def test_non_empty_create_map_collects_as_dict(spark) -> None:
df = spark.createDataFrame([("a", 1), ("b", 2)], ["k", "v"])
out = df.withColumn("m", F.create_map(F.col("k"), F.col("v")))
rows = out.collect()
assert len(rows) == 2
assert rows[0]["m"] == {"a": 1}
assert rows[1]["m"] == {"b": 2}