from __future__ import annotations
from tests.fixtures.spark_imports import get_spark_imports
_imports = get_spark_imports()
SparkSession = _imports.SparkSession
F = _imports.F
def test_posexplode_module_exists() -> None:
assert hasattr(F, "posexplode")
assert callable(F.posexplode)
def test_posexplode_returns_two_columns() -> None:
spark = SparkSession.builder.appName("test_264").getOrCreate()
df = spark.createDataFrame(
[{"Name": "Alice", "Values": [10, 20]}, {"Name": "Bob", "Values": [30, 40]}],
"Name string, Values array<int>",
)
out = F.posexplode(F.col("Values"))
if isinstance(out, tuple):
pos_col, val_col = out
assert pos_col is not None and val_col is not None
pos_col.alias("pos")
val_col.alias("val")
else:
exploded = df.select(F.posexplode("Values").alias("pos", "val"))
rows = exploded.collect()
assert len(rows) >= 1
def test_explode_module_exists() -> None:
assert hasattr(F, "explode")
assert callable(F.explode)