Skip to content

Commit 718d067

Browse files
jbrockmendeljreback
authored andcommitted
split off scalar tests to submodules (#19752)
1 parent 73ecfe6 commit 718d067

File tree

9 files changed

+423
-163
lines changed

9 files changed

+423
-163
lines changed

pandas/tests/scalar/interval/__init__.py

Whitespace-only changes.

pandas/tests/scalar/period/__init__.py

Whitespace-only changes.

pandas/tests/scalar/timedelta/__init__.py

Whitespace-only changes.

pandas/tests/scalar/timedelta/test_arithmetic.py

+422
Large diffs are not rendered by default.

pandas/tests/scalar/test_timedelta.py renamed to pandas/tests/scalar/timedelta/test_timedelta.py

+1-163
Original file line numberDiff line numberDiff line change
@@ -74,46 +74,6 @@ class Other:
7474
assert td.__mul__(other) is NotImplemented
7575
assert td.__floordiv__(other) is NotImplemented
7676

77-
def test_timedelta_ops_scalar(self):
78-
# GH 6808
79-
base = pd.to_datetime('20130101 09:01:12.123456')
80-
expected_add = pd.to_datetime('20130101 09:01:22.123456')
81-
expected_sub = pd.to_datetime('20130101 09:01:02.123456')
82-
83-
for offset in [pd.to_timedelta(10, unit='s'), timedelta(seconds=10),
84-
np.timedelta64(10, 's'),
85-
np.timedelta64(10000000000, 'ns'),
86-
pd.offsets.Second(10)]:
87-
result = base + offset
88-
assert result == expected_add
89-
90-
result = base - offset
91-
assert result == expected_sub
92-
93-
base = pd.to_datetime('20130102 09:01:12.123456')
94-
expected_add = pd.to_datetime('20130103 09:01:22.123456')
95-
expected_sub = pd.to_datetime('20130101 09:01:02.123456')
96-
97-
for offset in [pd.to_timedelta('1 day, 00:00:10'),
98-
pd.to_timedelta('1 days, 00:00:10'),
99-
timedelta(days=1, seconds=10),
100-
np.timedelta64(1, 'D') + np.timedelta64(10, 's'),
101-
pd.offsets.Day() + pd.offsets.Second(10)]:
102-
result = base + offset
103-
assert result == expected_add
104-
105-
result = base - offset
106-
assert result == expected_sub
107-
108-
def test_ops_offsets(self):
109-
td = Timedelta(10, unit='d')
110-
assert Timedelta(241, unit='h') == td + pd.offsets.Hour(1)
111-
assert Timedelta(241, unit='h') == pd.offsets.Hour(1) + td
112-
assert 240 == td / pd.offsets.Hour(1)
113-
assert 1 / 240.0 == pd.offsets.Hour(1) / td
114-
assert Timedelta(239, unit='h') == td - pd.offsets.Hour(1)
115-
assert Timedelta(-239, unit='h') == pd.offsets.Hour(1) - td
116-
11777
def test_unary_ops(self):
11878
td = Timedelta(10, unit='d')
11979

@@ -129,130 +89,8 @@ def test_unary_ops(self):
12989

13090
def test_binary_ops_nat(self):
13191
td = Timedelta(10, unit='d')
132-
133-
assert (td - pd.NaT) is pd.NaT
134-
assert (td + pd.NaT) is pd.NaT
92+
# FIXME: The next test is wrong: td * NaT should raise
13593
assert (td * pd.NaT) is pd.NaT
136-
assert (td / pd.NaT) is np.nan
137-
assert (td // pd.NaT) is np.nan
138-
assert (td // np.timedelta64('NaT')) is np.nan
139-
140-
def test_binary_ops_integers(self):
141-
td = Timedelta(10, unit='d')
142-
143-
assert td * 2 == Timedelta(20, unit='d')
144-
assert td / 2 == Timedelta(5, unit='d')
145-
assert td // 2 == Timedelta(5, unit='d')
146-
147-
# invert
148-
assert td * -1 == Timedelta('-10d')
149-
assert -1 * td == Timedelta('-10d')
150-
151-
# can't operate with integers
152-
pytest.raises(TypeError, lambda: td + 2)
153-
pytest.raises(TypeError, lambda: td - 2)
154-
155-
def test_binary_ops_with_timedelta(self):
156-
td = Timedelta(10, unit='d')
157-
158-
assert td - td == Timedelta(0, unit='ns')
159-
assert td + td == Timedelta(20, unit='d')
160-
assert td / td == 1
161-
162-
# invalid multiply with another timedelta
163-
pytest.raises(TypeError, lambda: td * td)
164-
165-
def test_floordiv(self):
166-
# GH#18846
167-
td = Timedelta(hours=3, minutes=4)
168-
scalar = Timedelta(hours=3, minutes=3)
169-
170-
# scalar others
171-
assert td // scalar == 1
172-
assert -td // scalar.to_pytimedelta() == -2
173-
assert (2 * td) // scalar.to_timedelta64() == 2
174-
175-
assert td // np.nan is pd.NaT
176-
assert np.isnan(td // pd.NaT)
177-
assert np.isnan(td // np.timedelta64('NaT'))
178-
179-
with pytest.raises(TypeError):
180-
td // np.datetime64('2016-01-01', dtype='datetime64[us]')
181-
182-
expected = Timedelta(hours=1, minutes=32)
183-
assert td // 2 == expected
184-
assert td // 2.0 == expected
185-
assert td // np.float64(2.0) == expected
186-
assert td // np.int32(2.0) == expected
187-
assert td // np.uint8(2.0) == expected
188-
189-
# Array-like others
190-
assert td // np.array(scalar.to_timedelta64()) == 1
191-
192-
res = (3 * td) // np.array([scalar.to_timedelta64()])
193-
expected = np.array([3], dtype=np.int64)
194-
tm.assert_numpy_array_equal(res, expected)
195-
196-
res = (10 * td) // np.array([scalar.to_timedelta64(),
197-
np.timedelta64('NaT')])
198-
expected = np.array([10, np.nan])
199-
tm.assert_numpy_array_equal(res, expected)
200-
201-
ser = pd.Series([1], dtype=np.int64)
202-
res = td // ser
203-
assert res.dtype.kind == 'm'
204-
205-
def test_rfloordiv(self):
206-
# GH#18846
207-
td = Timedelta(hours=3, minutes=3)
208-
scalar = Timedelta(hours=3, minutes=4)
209-
210-
# scalar others
211-
# x // Timedelta is defined only for timedelta-like x. int-like,
212-
# float-like, and date-like, in particular, should all either
213-
# a) raise TypeError directly or
214-
# b) return NotImplemented, following which the reversed
215-
# operation will raise TypeError.
216-
assert td.__rfloordiv__(scalar) == 1
217-
assert (-td).__rfloordiv__(scalar.to_pytimedelta()) == -2
218-
assert (2 * td).__rfloordiv__(scalar.to_timedelta64()) == 0
219-
220-
assert np.isnan(td.__rfloordiv__(pd.NaT))
221-
assert np.isnan(td.__rfloordiv__(np.timedelta64('NaT')))
222-
223-
dt64 = np.datetime64('2016-01-01', dtype='datetime64[us]')
224-
with pytest.raises(TypeError):
225-
td.__rfloordiv__(dt64)
226-
227-
assert td.__rfloordiv__(np.nan) is NotImplemented
228-
assert td.__rfloordiv__(3.5) is NotImplemented
229-
assert td.__rfloordiv__(2) is NotImplemented
230-
231-
with pytest.raises(TypeError):
232-
td.__rfloordiv__(np.float64(2.0))
233-
with pytest.raises(TypeError):
234-
td.__rfloordiv__(np.int32(2.0))
235-
with pytest.raises(TypeError):
236-
td.__rfloordiv__(np.uint8(9))
237-
238-
# Array-like others
239-
assert td.__rfloordiv__(np.array(scalar.to_timedelta64())) == 1
240-
241-
res = td.__rfloordiv__(np.array([(3 * scalar).to_timedelta64()]))
242-
expected = np.array([3], dtype=np.int64)
243-
tm.assert_numpy_array_equal(res, expected)
244-
245-
arr = np.array([(10 * scalar).to_timedelta64(),
246-
np.timedelta64('NaT')])
247-
res = td.__rfloordiv__(arr)
248-
expected = np.array([10, np.nan])
249-
tm.assert_numpy_array_equal(res, expected)
250-
251-
ser = pd.Series([1], dtype=np.int64)
252-
res = td.__rfloordiv__(ser)
253-
assert res is NotImplemented
254-
with pytest.raises(TypeError):
255-
ser // td
25694

25795

25896
class TestTimedeltaComparison(object):

0 commit comments

Comments
 (0)