Skip to content

Commit 9e2bd2b

Browse files
committed
Add tests for maybe_upcast_putmask
1 parent 65c0441 commit 9e2bd2b

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# -*- coding: utf-8 -*-
2+
3+
import numpy as np
4+
import pytest
5+
6+
from pandas.core.dtypes.cast import maybe_upcast_putmask
7+
8+
from pandas import Series
9+
from pandas.util import testing as tm
10+
11+
12+
def test_upcast_error():
13+
# GH23823
14+
ser = Series([10, 11, 12])
15+
mask = np.array([False, True, False])
16+
other = np.array([61, 62, 63])
17+
with pytest.raises(ValueError):
18+
result, _ = maybe_upcast_putmask(ser, mask, other)
19+
20+
21+
@pytest.mark.parametrize("arr, other, exp_changed, expected", [
22+
(np.arange(1, 6), np.array([61, 62, 63]),
23+
False, np.array([1, 61, 3, 62, 63])),
24+
(np.arange(1, 6), np.array([61.1, 62.2, 63.3]),
25+
True, np.array([1, 61.1, 3, 62.2, 63.3])),
26+
(np.arange(1, 6), np.nan,
27+
True, np.array([1, np.nan, 3, np.nan, np.nan])),
28+
(np.arange(10, 15), np.array([61, 62]),
29+
False, np.array([10, 61, 12, 62, 61])),
30+
(np.arange(10, 15), np.array([61, np.nan]),
31+
True, np.array([10, 61, 12, np.nan, 61]))
32+
])
33+
def test_upcast(arr, other, exp_changed, expected):
34+
# GH23823
35+
mask = np.array([False, True, False, True, True])
36+
result, changed = maybe_upcast_putmask(arr, mask, other)
37+
38+
assert changed == exp_changed
39+
tm.assert_numpy_array_equal(result, expected)
40+
41+
42+
@pytest.mark.parametrize("arr, other, exp_changed, expected", [
43+
(np.arange('2019-01-01', '2019-01-06', dtype='datetime64[D]'),
44+
np.arange('2018-01-01', '2018-01-04', dtype='datetime64[D]'),
45+
False, np.array(['2019-01-01', '2018-01-01', '2019-01-03',
46+
'2018-01-02', '2018-01-03'], dtype='datetime64[D]')),
47+
(np.arange('2019-01-01', '2019-01-06', dtype='datetime64[D]'), np.nan,
48+
False, np.array(['2019-01-01', np.datetime64('NaT'),
49+
'2019-01-03', np.datetime64('NaT'),
50+
np.datetime64('NaT')], dtype='datetime64[D]')),
51+
(np.arange('2019-01-01', '2019-01-06', dtype='datetime64[D]'),
52+
np.arange('2018-01-01', '2018-01-03', dtype='datetime64[D]'),
53+
False, np.array(['2019-01-01', '2018-01-01', '2019-01-03',
54+
'2018-01-02', '2018-01-01'], dtype='datetime64[D]'))
55+
])
56+
def test_upcast_datetime(arr, other, exp_changed, expected):
57+
# GH23823
58+
mask = np.array([False, True, False, True, True])
59+
result, changed = maybe_upcast_putmask(arr, mask, other)
60+
61+
assert changed == exp_changed
62+
tm.assert_numpy_array_equal(result, expected)

0 commit comments

Comments
 (0)