Skip to content

Commit 45e4b89

Browse files
committed
#100 Use pandas testing functions for tests
1 parent 35e37c8 commit 45e4b89

File tree

2 files changed

+26
-71
lines changed

2 files changed

+26
-71
lines changed

tests/test_asdata.py

Lines changed: 20 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44

55
# dependencies
66
import pandas as pd
7+
from pandas.testing import assert_frame_equal, assert_series_equal
78
from data import Weather, weather, df_weather_true, ser_weather_true
8-
from pandas_dataclasses import asdataframe, asseries, Spec
9+
from pandas_dataclasses import Spec, asdataframe, asseries
910
from pandas_dataclasses.core.asdata import get_attrs, get_columns, get_data, get_index
1011

1112

@@ -15,92 +16,45 @@
1516

1617
# test functions
1718
def test_asseries() -> None:
18-
ser_weather = asseries(weather)
19-
20-
assert ser_weather.attrs == ser_weather_true.attrs
21-
assert ser_weather.name == ser_weather_true.name
22-
assert ser_weather.dtype == ser_weather_true.dtype
23-
assert (ser_weather == ser_weather_true).all()
24-
25-
assert ser_weather.index.name == ser_weather_true.index.name
26-
assert ser_weather.index.dtype == ser_weather_true.index.dtype
27-
assert (ser_weather.index == ser_weather_true.index).all()
19+
assert_series_equal(asseries(weather), ser_weather_true)
2820

2921

3022
def test_asdataframe() -> None:
31-
df_weather = asdataframe(weather)
32-
33-
assert df_weather.attrs == df_weather_true.attrs
34-
assert df_weather.iloc[:, 0].dtype == df_weather_true.iloc[:, 0].dtype
35-
assert df_weather.iloc[:, 1].dtype == df_weather_true.iloc[:, 1].dtype
36-
assert df_weather.iloc[:, 2].dtype == df_weather_true.iloc[:, 2].dtype
37-
assert df_weather.iloc[:, 3].dtype == df_weather_true.iloc[:, 3].dtype
38-
assert (df_weather == df_weather_true).all().all()
39-
40-
assert df_weather.columns.names == df_weather_true.columns.names
41-
assert (df_weather.columns.dtypes == df_weather_true.columns.dtypes).all()
42-
assert (df_weather.columns == df_weather_true.columns).all()
43-
44-
assert df_weather.index.names == df_weather_true.index.names
45-
assert (df_weather.index.dtypes == df_weather_true.index.dtypes).all() # type: ignore
46-
assert (df_weather.index == df_weather_true.index).all()
23+
assert_frame_equal(asdataframe(weather), df_weather_true)
4724

4825

4926
def test_get_attrs() -> None:
5027
attrs = get_attrs(spec)
51-
keys = list(attrs.keys())
52-
values = list(attrs.values())
5328

54-
assert keys[0] == spec.fields.of_attr[0].name
55-
assert keys[1] == spec.fields.of_attr[1].name
56-
assert keys[2] == spec.fields.of_attr[2].name
57-
58-
assert values[0] == spec.fields.of_attr[0].default
59-
assert values[1] == spec.fields.of_attr[1].default
60-
assert values[2] == spec.fields.of_attr[2].default
29+
for i, (key, val) in enumerate(attrs.items()):
30+
assert key == spec.fields.of_attr[i].name
31+
assert val == spec.fields.of_attr[i].default
6132

6233

6334
def test_get_columns() -> None:
6435
columns = cast(pd.Index, get_columns(spec))
6536

66-
assert columns.names[0] == spec.fields.of_column[0].name
67-
assert columns.names[1] == spec.fields.of_column[1].name
37+
for i in range(len(columns)):
38+
assert columns[i] == spec.fields.of_data[i].name
6839

69-
assert columns[0] == spec.fields.of_data[0].name
70-
assert columns[1] == spec.fields.of_data[1].name
71-
assert columns[2] == spec.fields.of_data[2].name
72-
assert columns[3] == spec.fields.of_data[3].name
40+
for i in range(columns.nlevels):
41+
assert columns.names[i] == spec.fields.of_column[i].name
7342

7443

7544
def test_get_data() -> None:
7645
data = get_data(spec)
77-
keys = list(data.keys())
78-
values = list(data.values())
79-
80-
assert keys[0] == spec.fields.of_data[0].name
81-
assert keys[1] == spec.fields.of_data[1].name
82-
assert keys[2] == spec.fields.of_data[2].name
83-
assert keys[3] == spec.fields.of_data[3].name
84-
85-
assert values[0].dtype.name == spec.fields.of_data[0].dtype
86-
assert values[1].dtype.name == spec.fields.of_data[1].dtype
87-
assert values[2].dtype.name == spec.fields.of_data[2].dtype
88-
assert values[3].dtype.name == spec.fields.of_data[3].dtype
8946

90-
assert (values[0] == spec.fields.of_data[0].default).all()
91-
assert (values[1] == spec.fields.of_data[1].default).all()
92-
assert (values[2] == spec.fields.of_data[2].default).all()
93-
assert (values[3] == spec.fields.of_data[3].default).all()
47+
for i, (key, val) in enumerate(data.items()):
48+
assert key == spec.fields.of_data[i].name
49+
assert val.dtype.name == spec.fields.of_data[i].dtype
50+
assert (val == spec.fields.of_data[i].default).all()
9451

9552

9653
def test_get_index() -> None:
9754
index = cast(pd.Index, get_index(spec))
9855

99-
assert index.names[0] == spec.fields.of_index[0].name
100-
assert index.names[1] == spec.fields.of_index[1].name
101-
102-
assert index.get_level_values(0).dtype == spec.fields.of_index[0].dtype
103-
assert index.get_level_values(1).dtype == spec.fields.of_index[1].dtype
104-
105-
assert (index.get_level_values(0) == spec.fields.of_index[0].default).all()
106-
assert (index.get_level_values(1) == spec.fields.of_index[1].default).all()
56+
for i in range(index.nlevels):
57+
level = index.get_level_values(i)
58+
assert level.name == spec.fields.of_index[i].name
59+
assert level.dtype.name == spec.fields.of_index[i].dtype
60+
assert (level == spec.fields.of_index[i].default).all()

tests/test_mixins.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
# dependencies
66
import pandas as pd
7+
from pandas.testing import assert_frame_equal, assert_series_equal
78
from data import Weather, weather, df_weather_true, ser_weather_true
89
from pandas_dataclasses import As, AsDataFrame, AsSeries
910

@@ -13,7 +14,7 @@ class CustomDataFrame(pd.DataFrame):
1314
pass
1415

1516

16-
class CustomSeries(pd.Series):
17+
class CustomSeries(pd.Series): # type: ignore
1718
pass
1819

1920

@@ -49,7 +50,7 @@ def test_dataframe_weather() -> None:
4950
)
5051

5152
assert isinstance(df_weather, pd.DataFrame)
52-
assert (df_weather == df_weather_true).all().all()
53+
assert_frame_equal(df_weather, df_weather_true)
5354

5455

5556
def test_custom_dataframe_weather() -> None:
@@ -63,7 +64,7 @@ def test_custom_dataframe_weather() -> None:
6364
)
6465

6566
assert isinstance(df_weather, CustomDataFrame)
66-
assert (df_weather == df_weather_true).all().all()
67+
assert_frame_equal(df_weather, df_weather_true, check_frame_type=False)
6768

6869

6970
def test_series_weather() -> None:
@@ -77,7 +78,7 @@ def test_series_weather() -> None:
7778
)
7879

7980
assert isinstance(ser_weather, pd.Series)
80-
assert (ser_weather == ser_weather_true).all()
81+
assert_series_equal(ser_weather, ser_weather_true)
8182

8283

8384
def test_custom_series_weather() -> None:
@@ -91,4 +92,4 @@ def test_custom_series_weather() -> None:
9192
)
9293

9394
assert isinstance(ser_weather, CustomSeries)
94-
assert (ser_weather == ser_weather_true).all()
95+
assert_series_equal(ser_weather, ser_weather_true, check_series_type=False)

0 commit comments

Comments
 (0)