from __future__ import annotations
from sparkless.testing import get_imports
_imports = get_imports()
SparkSession = _imports.SparkSession
F = _imports.F
def test_round_string_column_implicit_cast() -> None:
spark = SparkSession.builder.appName("test_262").getOrCreate()
df = spark.createDataFrame(
[{"val": "10.4"}, {"val": "9.6"}],
["val"],
)
df = df.withColumn("rounded", F.round(F.col("val")))
out = df.collect()
assert len(out) == 2
assert out[0]["val"] == "10.4"
assert out[0]["rounded"] == 10.0
assert out[1]["val"] == "9.6"
assert out[1]["rounded"] == 10.0
def test_round_string_column_with_scale() -> None:
spark = SparkSession.builder.appName("test_262").getOrCreate()
df = spark.createDataFrame(
[{"val": "10.44"}, {"val": "9.66"}],
["val"],
)
df = df.withColumn("rounded", F.round(F.col("val"), 1))
out = df.collect()
assert len(out) == 2
assert out[0]["rounded"] == 10.4
assert out[1]["rounded"] == 9.7
def test_round_string_column_strips_whitespace() -> None:
spark = SparkSession.builder.appName("test_272").getOrCreate()
df = spark.createDataFrame(
[{"val": " 10.6 "}, {"val": "\t20.7"}],
["val"],
)
df = df.withColumn("rounded", F.round(F.col("val")))
out = df.collect()
assert len(out) == 2
assert out[0]["rounded"] == 11.0
assert out[1]["rounded"] == 21.0