Skip to content

Commit f5038de

Browse files
lostellajreback
authored andcommitted
improve test for timestamp addition/subtraction (#27192)
* improve test for timestamp addition/subtraction * fix bug in test * add test cases
1 parent 002b2c3 commit f5038de

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

pandas/tests/scalar/timestamp/test_arithmetic.py

+17-6
Original file line numberDiff line numberDiff line change
@@ -96,20 +96,31 @@ def test_addition_subtraction_types(self):
9696
assert type(ts + td64) == Timestamp
9797
assert type(ts - td64) == Timestamp
9898

99-
def test_addition_subtraction_preserve_frequency(self):
100-
ts = Timestamp('2014-03-05', freq='D')
101-
td = timedelta(days=1)
99+
@pytest.mark.parametrize('freq, td, td64', [
100+
('S', timedelta(seconds=1), np.timedelta64(1, 's')),
101+
('min', timedelta(minutes=1), np.timedelta64(1, 'm')),
102+
('H', timedelta(hours=1), np.timedelta64(1, 'h')),
103+
('D', timedelta(days=1), np.timedelta64(1, 'D')),
104+
('W', timedelta(weeks=1), np.timedelta64(1, 'W')),
105+
('M', None, np.timedelta64(1, 'M'))
106+
])
107+
def test_addition_subtraction_preserve_frequency(self, freq, td, td64):
108+
ts = Timestamp('2014-03-05 00:00:00', freq=freq)
102109
original_freq = ts.freq
103110

104111
with tm.assert_produces_warning(FutureWarning):
105112
# GH#22535 add/sub with integers is deprecated
106113
assert (ts + 1).freq == original_freq
107114
assert (ts - 1).freq == original_freq
108115

109-
assert (ts + td).freq == original_freq
110-
assert (ts - td).freq == original_freq
116+
assert (ts + 1 * original_freq).freq == original_freq
117+
assert (ts - 1 * original_freq).freq == original_freq
118+
119+
if td is not None:
120+
# timedelta does not support months as unit
121+
assert (ts + td).freq == original_freq
122+
assert (ts - td).freq == original_freq
111123

112-
td64 = np.timedelta64(1, 'D')
113124
assert (ts + td64).freq == original_freq
114125
assert (ts - td64).freq == original_freq
115126

0 commit comments

Comments
 (0)