import robin_sparkless as rs
def test_select_same_column_cast_twice() -> None:
spark = rs.SparkSession.builder().app_name("test").get_or_create()
df = spark._create_dataframe_from_rows(
[{"num": 1}, {"num": 2}],
[("num", "bigint")],
)
result = df.select(
rs.col("num").cast("string"),
rs.col("num").cast("int"),
)
rows = result.collect()
assert len(rows) == 2
assert "num" in rows[0]
assert "num_1" in rows[0]
assert rows[0]["num"] == "1"
assert rows[0]["num_1"] == 1
assert rows[1]["num"] == "2"
assert rows[1]["num_1"] == 2
def test_select_three_same_name() -> None:
spark = rs.SparkSession.builder().app_name("test").get_or_create()
df = spark._create_dataframe_from_rows(
[{"x": 10}],
[("x", "bigint")],
)
result = df.select(
rs.col("x"),
rs.col("x") + rs.lit(0),
rs.col("x") * 1,
)
rows = result.collect()
assert len(rows) == 1
assert "x" in rows[0]
assert "x_1" in rows[0]
assert "x_2" in rows[0]
assert rows[0]["x"] == 10
assert rows[0]["x_1"] == 10
assert rows[0]["x_2"] == 10