|
4 | 4 |
|
5 | 5 | # dependencies
|
6 | 6 | import pandas as pd
|
| 7 | +from pandas.testing import assert_frame_equal, assert_series_equal |
7 | 8 | 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 |
9 | 10 | from pandas_dataclasses.core.asdata import get_attrs, get_columns, get_data, get_index
|
10 | 11 |
|
11 | 12 |
|
|
15 | 16 |
|
16 | 17 | # test functions
|
17 | 18 | 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) |
28 | 20 |
|
29 | 21 |
|
30 | 22 | 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) |
47 | 24 |
|
48 | 25 |
|
49 | 26 | def test_get_attrs() -> None:
|
50 | 27 | attrs = get_attrs(spec)
|
51 |
| - keys = list(attrs.keys()) |
52 |
| - values = list(attrs.values()) |
53 | 28 |
|
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 |
61 | 32 |
|
62 | 33 |
|
63 | 34 | def test_get_columns() -> None:
|
64 | 35 | columns = cast(pd.Index, get_columns(spec))
|
65 | 36 |
|
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 |
68 | 39 |
|
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 |
73 | 42 |
|
74 | 43 |
|
75 | 44 | def test_get_data() -> None:
|
76 | 45 | 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 |
89 | 46 |
|
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() |
94 | 51 |
|
95 | 52 |
|
96 | 53 | def test_get_index() -> None:
|
97 | 54 | index = cast(pd.Index, get_index(spec))
|
98 | 55 |
|
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() |
0 commit comments