diff options
author | Matti Picus <matti.picus@gmail.com> | 2019-10-30 11:48:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-30 11:48:24 +0200 |
commit | 3b5db53feee4042400530df2d07d0ca8a3d0d19e (patch) | |
tree | d534dbeec344d668e338daf632f49514ba13ac72 /numpy/core/tests | |
parent | 79d23f0bdc6a5e6bcd280cd93f73fabca8e2469f (diff) | |
parent | 744a2ac0fab372c8ef633ffa15702387a24db204 (diff) | |
download | numpy-3b5db53feee4042400530df2d07d0ca8a3d0d19e.tar.gz |
Merge pull request #14669 from siddhesh/undefined-float2datetime
BUG: Do not rely on undefined behaviour to cast from float to datetime
Diffstat (limited to 'numpy/core/tests')
-rw-r--r-- | numpy/core/tests/test_datetime.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/numpy/core/tests/test_datetime.py b/numpy/core/tests/test_datetime.py index 11f900c5f..a756dc7e7 100644 --- a/numpy/core/tests/test_datetime.py +++ b/numpy/core/tests/test_datetime.py @@ -483,6 +483,30 @@ class TestDateTime(object): assert_equal(np.datetime64(a, '[Y]'), np.datetime64('NaT', '[Y]')) assert_equal(np.datetime64(a, '[W]'), np.datetime64('NaT', '[W]')) + # NaN -> NaT + nan = np.array([np.nan] * 8) + fnan = nan.astype('f') + lnan = nan.astype('g') + cnan = nan.astype('D') + cfnan = nan.astype('F') + clnan = nan.astype('G') + + nat = np.array([np.datetime64('NaT')] * 8) + assert_equal(nan.astype('M8[ns]'), nat) + assert_equal(fnan.astype('M8[ns]'), nat) + assert_equal(lnan.astype('M8[ns]'), nat) + assert_equal(cnan.astype('M8[ns]'), nat) + assert_equal(cfnan.astype('M8[ns]'), nat) + assert_equal(clnan.astype('M8[ns]'), nat) + + nat = np.array([np.timedelta64('NaT')] * 8) + assert_equal(nan.astype('timedelta64[ns]'), nat) + assert_equal(fnan.astype('timedelta64[ns]'), nat) + assert_equal(lnan.astype('timedelta64[ns]'), nat) + assert_equal(cnan.astype('timedelta64[ns]'), nat) + assert_equal(cfnan.astype('timedelta64[ns]'), nat) + assert_equal(clnan.astype('timedelta64[ns]'), nat) + def test_days_creation(self): assert_equal(np.array('1599', dtype='M8[D]').astype('i8'), (1600-1970)*365 - (1972-1600)/4 + 3 - 365) |