|
7 | 7 |
|
8 | 8 | from pandas.core.api import Timestamp
|
9 | 9 | from pandas.tslib import period_asfreq, period_ordinal
|
| 10 | +from pandas.tseries.index import date_range |
10 | 11 | from pandas.tseries.frequencies import get_freq
|
11 | 12 | from pandas import _np_version_under1p7
|
12 | 13 | import pandas.util.testing as tm
|
@@ -302,10 +303,32 @@ def test_period_ordinal_business_day(self):
|
302 | 303 | # Tuesday
|
303 | 304 | self.assertEqual(11418, period_ordinal(2013, 10, 8, 0, 0, 0, 0, 0, get_freq('B')))
|
304 | 305 |
|
305 |
| -class TestTomeStampOps(tm.TestCase): |
| 306 | +class TestTimestampOps(tm.TestCase): |
306 | 307 | def test_timestamp_and_datetime(self):
|
307 |
| - self.assertEqual((Timestamp(datetime.datetime(2013, 10,13)) - datetime.datetime(2013, 10,12)).days, 1) |
308 |
| - self.assertEqual((datetime.datetime(2013, 10, 12) - Timestamp(datetime.datetime(2013, 10,13))).days, -1) |
| 308 | + self.assertEqual((Timestamp(datetime.datetime(2013, 10, 13)) - datetime.datetime(2013, 10, 12)).days, 1) |
| 309 | + self.assertEqual((datetime.datetime(2013, 10, 12) - Timestamp(datetime.datetime(2013, 10, 13))).days, -1) |
| 310 | + |
| 311 | + def test_addition_subtraction_types(self): |
| 312 | + # Assert on the types resulting from Timestamp +/- various date/time objects |
| 313 | + datetime_instance = datetime.datetime(2014, 3, 4) |
| 314 | + timedelta_instance = datetime.timedelta(seconds=1) |
| 315 | + timedelta64_instance = np.timedelta64(1, 'D') |
| 316 | + # build a timestamp with a frequency, since then it supports addition/subtraction of integers |
| 317 | + timestamp_instance = date_range(datetime_instance, periods=1, freq='D')[0] |
| 318 | + |
| 319 | + self.assertEqual(type(timestamp_instance + 1), Timestamp) |
| 320 | + self.assertEqual(type(timestamp_instance - 1), Timestamp) |
| 321 | + |
| 322 | + # Timestamp + datetime not supported, though subtraction is supported and yields timedelta |
| 323 | + self.assertEqual(type(timestamp_instance - datetime_instance), datetime.timedelta) |
| 324 | + |
| 325 | + # Timestamp +/- datetime64 not supported, so not tested (could possibly assert error thrown?) |
| 326 | + |
| 327 | + self.assertEqual(type(timestamp_instance + timedelta_instance), Timestamp) |
| 328 | + self.assertEqual(type(timestamp_instance - timedelta_instance), Timestamp) |
| 329 | + |
| 330 | + self.assertEqual(type(timestamp_instance + timedelta64_instance), Timestamp) |
| 331 | + self.assertEqual(type(timestamp_instance - timedelta64_instance), Timestamp) |
309 | 332 |
|
310 | 333 | if __name__ == '__main__':
|
311 | 334 | nose.runmodule(argv=[__file__, '-vvs', '-x', '--pdb', '--pdb-failure'],
|
|
0 commit comments