Skip to content

Commit 4cffc67

Browse files
update tests
1 parent c01d4d5 commit 4cffc67

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

pandas/tests/io/excel/test_readers.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,42 @@ def test_read_excel_type_check(self, col, tmp_excel, read_ext):
168168
df2 = pd.read_excel(tmp_excel, dtype={"bool_column": "boolean"})
169169
tm.assert_frame_equal(df, df2)
170170

171+
def test_read_excel_int_bool_mix_type_check(self, tmp_excel, read_ext):
172+
# GH 60088
173+
if read_ext in (".xlsb", ".xls"):
174+
pytest.skip(f"No engine for filetype: '{read_ext}'")
175+
176+
df1 = DataFrame(
177+
{
178+
"a": [True, True],
179+
"b": [1, True],
180+
"c": [True, 1],
181+
"d": [False, 0],
182+
"e": [0, False],
183+
"f": [False, False],
184+
},
185+
dtype=object,
186+
)
187+
df1.to_excel(tmp_excel, index=False)
188+
189+
df2 = pd.read_excel(tmp_excel, dtype=object)
190+
191+
tm.assert_frame_equal(df1, df2)
192+
193+
for idx, row in df2.iterrows():
194+
for col in df2.columns:
195+
val = row[col]
196+
exp_val = df1.iloc[idx][col]
197+
# Check if values match
198+
assert val == exp_val, (
199+
f"Mismatch at Row {idx} Column {col}: {val} != {exp_val}"
200+
)
201+
# Check if types match
202+
assert type(val) == type(exp_val), (
203+
f"Type mismatch at Row {idx} Column {col}: "
204+
f"{type(val)} != {type(exp_val)}"
205+
)
206+
171207
def test_pass_none_type(self, datapath):
172208
# GH 58159
173209
f_path = datapath("io", "data", "excel", "test_none_type.xlsx")

pandas/tests/io/parser/common/test_common_basic.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -835,8 +835,10 @@ def test_read_seek(all_parsers):
835835

836836
def test_dtype_conversion_in_sanitization():
837837
# GH60088
838-
values = np.array([1, True], dtype=object)
839-
expected = np.array([1, True], dtype=object)
838+
values = np.array([1, True, 0, False, 1.0, 0.0, np.True_, np.False_], dtype=object)
839+
expected = np.array(
840+
[1, True, 0, False, 1.0, 0.0, np.True_, np.False_], dtype=object
841+
)
840842
libparsers.sanitize_objects(values, na_values=set())
841843
for v, e in zip(values, expected):
842844
assert v == e

0 commit comments

Comments
 (0)