From 3d1c2d96287496856f1104268f1994cea0f20017 Mon Sep 17 00:00:00 2001 From: Jeff Whitaker Date: Sat, 29 Aug 2020 16:51:49 -0600 Subject: [PATCH] add test for issue #198 --- cftime/__init__.py | 2 +- test/test_cftime.py | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/cftime/__init__.py b/cftime/__init__.py index b185a0be..49198c68 100644 --- a/cftime/__init__.py +++ b/cftime/__init__.py @@ -1,5 +1,5 @@ from ._cftime import utime, JulianDayFromDate, DateFromJulianDay, UNIT_CONVERSION_FACTORS -from ._cftime import _parse_date, date2index, time2index +from ._cftime import _parse_date, date2index, time2index, DATE_TYPES from ._cftime import datetime, real_datetime, datetime_base from ._cftime import DatetimeNoLeap, DatetimeAllLeap, Datetime360Day, DatetimeJulian, \ DatetimeGregorian, DatetimeProlepticGregorian diff --git a/test/test_cftime.py b/test/test_cftime.py index 87a1792e..7fb6fd9c 100644 --- a/test/test_cftime.py +++ b/test/test_cftime.py @@ -819,6 +819,17 @@ def test_tz_naive(self): cal = 'proleptic_gregorian' dt2 = num2date(date2num(dt1, units, cal), units, cal) assert(dt1 == dt2) +# issue #198 - cftime.datetime creates calendar specific datetimes that +# support addition/subtraction of timedeltas. + dt = cftime.datetime(2020, 1, 1, calendar='') + assert(isinstance(dt, cftime.datetime_base)) + dt = cftime.datetime(2020, 1, 1, calendar="julian") + dt += timedelta(hours=1) + assert(str(dt) == '2020-01-01 01:00:00') + assert(isinstance(dt, cftime.DatetimeJulian)) + for cal in cftime.DATE_TYPES.keys(): + dt = cftime.datetime(2020, 1, 1, calendar=cal) + assert(isinstance(dt, cftime.DATE_TYPES[cal])) class TestDate2index(unittest.TestCase): @@ -1390,8 +1401,7 @@ def test_parse_incorrect_unitstring(self): ValueError, cftime._cftime.date2num, datetime(1900, 1, 1, 0), datestr, 'standard') -_DATE_TYPES = [DatetimeNoLeap, DatetimeAllLeap, DatetimeJulian, Datetime360Day, - DatetimeGregorian, DatetimeProlepticGregorian] +_DATE_TYPES = cftime.DATE_TYPES.values() @pytest.fixture(params=_DATE_TYPES)