Skip to content

Commit a8b89fd

Browse files
authored
test: include nulls in unique test (#2937)
* test: include nulls in `unique` test * test with both nulls present and without
1 parent 6bd632e commit a8b89fd

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

tests/expr_and_series/unique_test.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
from narwhals.exceptions import InvalidOperationError
99
from tests.utils import Constructor, ConstructorEager, assert_equal_data
1010

11-
data = {"a": [1, 1, 2]}
12-
data_str = {"a": ["x", "x", "y"]}
11+
data = {"a": [1, 1, None, 2]}
12+
data_str = {"a": ["x", "x", "y", None]}
1313

1414

1515
def test_unique_expr(constructor: Constructor) -> None:
@@ -20,8 +20,8 @@ def test_unique_expr(constructor: Constructor) -> None:
2020
else does_not_raise()
2121
)
2222
with context:
23-
result = df.select(nw.col("a").unique())
24-
expected = {"a": [1, 2]}
23+
result = df.select(nw.col("a").unique()).sort("a")
24+
expected = {"a": [None, 1, 2]}
2525
assert_equal_data(result, expected)
2626

2727

@@ -34,6 +34,9 @@ def test_unique_expr_agg(
3434
result = df.select(nw.col("a").unique().sum())
3535
expected = {"a": [3]}
3636
assert_equal_data(result, expected)
37+
result = df.drop_nulls().select(nw.col("a").unique().len())
38+
expected = {"a": [2]}
39+
assert_equal_data(result, expected)
3740

3841

3942
def test_unique_illegal_combination(constructor: Constructor) -> None:
@@ -47,5 +50,18 @@ def test_unique_illegal_combination(constructor: Constructor) -> None:
4750
def test_unique_series(constructor_eager: ConstructorEager) -> None:
4851
series = nw.from_native(constructor_eager(data_str), eager_only=True)["a"]
4952
result = series.unique(maintain_order=True)
53+
expected = {"a": ["x", "y", None]}
54+
assert_equal_data({"a": result}, expected)
55+
result = series.drop_nulls().unique(maintain_order=True)
5056
expected = {"a": ["x", "y"]}
5157
assert_equal_data({"a": result}, expected)
58+
59+
60+
def test_unique_series_numeric(constructor_eager: ConstructorEager) -> None:
61+
series = nw.from_native(constructor_eager(data), eager_only=True)["a"]
62+
result = series.unique(maintain_order=True)
63+
expected = {"a": [1, None, 2]}
64+
assert_equal_data({"a": result}, expected)
65+
result = series.drop_nulls().unique(maintain_order=True)
66+
expected = {"a": [1, 2]}
67+
assert_equal_data({"a": result}, expected)

0 commit comments

Comments
 (0)