Skip to content

Commit 69a9b05

Browse files
TrigonaMinimajreback
TrigonaMinima
authored andcommitted
TST: Timestamp and Timeseries tests reorg (gh14854)
xref partial on pandas-dev#14854 Author: TrigonaMinima <[email protected]> Closes pandas-dev#15301 from TrigonaMinima/gh14854-timestamp and squashes the following commits: d8e3f4d [TrigonaMinima] splitting test_timeseries.py further 4072d93 [TrigonaMinima] TST: tseries/tests/test_timeseries.py tests moved to appropriate places. dbfd2ba [TrigonaMinima] TST: Timestamp tests compiled (gh14854)
1 parent 9ddba8d commit 69a9b05

File tree

10 files changed

+5183
-5203
lines changed

10 files changed

+5183
-5203
lines changed

pandas/tests/indexes/datetimes/test_construction.py

+68-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
import pandas as pd
55
import pandas.util.testing as tm
66
from pandas.tslib import OutOfBoundsDatetime
7-
from pandas import (DatetimeIndex, Index, Timestamp, datetime, date_range)
7+
from pandas import (DatetimeIndex, Index, Timestamp, datetime, date_range,
8+
to_datetime)
89

910

1011
class TestDatetimeIndex(tm.TestCase):
@@ -423,3 +424,69 @@ def test_000constructor_resolution(self):
423424
idx = DatetimeIndex([t1])
424425

425426
self.assertEqual(idx.nanosecond[0], t1.nanosecond)
427+
428+
429+
class TestTimeSeries(tm.TestCase):
430+
_multiprocess_can_split_ = True
431+
432+
def test_dti_constructor_preserve_dti_freq(self):
433+
rng = date_range('1/1/2000', '1/2/2000', freq='5min')
434+
435+
rng2 = DatetimeIndex(rng)
436+
self.assertEqual(rng.freq, rng2.freq)
437+
438+
def test_dti_constructor_years_only(self):
439+
# GH 6961
440+
for tz in [None, 'UTC', 'Asia/Tokyo', 'dateutil/US/Pacific']:
441+
rng1 = date_range('2014', '2015', freq='M', tz=tz)
442+
expected1 = date_range('2014-01-31', '2014-12-31', freq='M', tz=tz)
443+
444+
rng2 = date_range('2014', '2015', freq='MS', tz=tz)
445+
expected2 = date_range('2014-01-01', '2015-01-01', freq='MS',
446+
tz=tz)
447+
448+
rng3 = date_range('2014', '2020', freq='A', tz=tz)
449+
expected3 = date_range('2014-12-31', '2019-12-31', freq='A', tz=tz)
450+
451+
rng4 = date_range('2014', '2020', freq='AS', tz=tz)
452+
expected4 = date_range('2014-01-01', '2020-01-01', freq='AS',
453+
tz=tz)
454+
455+
for rng, expected in [(rng1, expected1), (rng2, expected2),
456+
(rng3, expected3), (rng4, expected4)]:
457+
tm.assert_index_equal(rng, expected)
458+
459+
def test_dti_constructor_small_int(self):
460+
# GH 13721
461+
exp = DatetimeIndex(['1970-01-01 00:00:00.00000000',
462+
'1970-01-01 00:00:00.00000001',
463+
'1970-01-01 00:00:00.00000002'])
464+
465+
for dtype in [np.int64, np.int32, np.int16, np.int8]:
466+
arr = np.array([0, 10, 20], dtype=dtype)
467+
tm.assert_index_equal(DatetimeIndex(arr), exp)
468+
469+
def test_dti_constructor_numpy_timeunits(self):
470+
# GH 9114
471+
base = pd.to_datetime(['2000-01-01T00:00', '2000-01-02T00:00', 'NaT'])
472+
473+
for dtype in ['datetime64[h]', 'datetime64[m]', 'datetime64[s]',
474+
'datetime64[ms]', 'datetime64[us]', 'datetime64[ns]']:
475+
values = base.values.astype(dtype)
476+
477+
tm.assert_index_equal(DatetimeIndex(values), base)
478+
tm.assert_index_equal(to_datetime(values), base)
479+
480+
def test_constructor_int64_nocopy(self):
481+
# #1624
482+
arr = np.arange(1000, dtype=np.int64)
483+
index = DatetimeIndex(arr)
484+
485+
arr[50:100] = -1
486+
self.assertTrue((index.asi8[50:100] == -1).all())
487+
488+
arr = np.arange(1000, dtype=np.int64)
489+
index = DatetimeIndex(arr, copy=True)
490+
491+
arr[50:100] = -1
492+
self.assertTrue((index.asi8[50:100] != -1).all())
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
from datetime import datetime, timedelta, time
2+
3+
import pandas as pd
4+
import pandas.util.testing as tm
5+
from pandas import date_range, offsets, DatetimeIndex, Timestamp
6+
7+
from pandas.tests.series.common import TestData
8+
9+
10+
class TestTimeSeries(TestData, tm.TestCase):
11+
_multiprocess_can_split_ = True
12+
13+
def test_date_range_gen_error(self):
14+
rng = date_range('1/1/2000 00:00', '1/1/2000 00:18', freq='5min')
15+
self.assertEqual(len(rng), 4)
16+
17+
def test_date_range_negative_freq(self):
18+
# GH 11018
19+
rng = date_range('2011-12-31', freq='-2A', periods=3)
20+
exp = pd.DatetimeIndex(['2011-12-31', '2009-12-31',
21+
'2007-12-31'], freq='-2A')
22+
tm.assert_index_equal(rng, exp)
23+
self.assertEqual(rng.freq, '-2A')
24+
25+
rng = date_range('2011-01-31', freq='-2M', periods=3)
26+
exp = pd.DatetimeIndex(['2011-01-31', '2010-11-30',
27+
'2010-09-30'], freq='-2M')
28+
tm.assert_index_equal(rng, exp)
29+
self.assertEqual(rng.freq, '-2M')
30+
31+
def test_date_range_bms_bug(self):
32+
# #1645
33+
rng = date_range('1/1/2000', periods=10, freq='BMS')
34+
35+
ex_first = Timestamp('2000-01-03')
36+
self.assertEqual(rng[0], ex_first)
37+
38+
def test_date_range_normalize(self):
39+
snap = datetime.today()
40+
n = 50
41+
42+
rng = date_range(snap, periods=n, normalize=False, freq='2D')
43+
44+
offset = timedelta(2)
45+
values = DatetimeIndex([snap + i * offset for i in range(n)])
46+
47+
tm.assert_index_equal(rng, values)
48+
49+
rng = date_range('1/1/2000 08:15', periods=n, normalize=False,
50+
freq='B')
51+
the_time = time(8, 15)
52+
for val in rng:
53+
self.assertEqual(val.time(), the_time)
54+
55+
def test_date_range_fy5252(self):
56+
dr = date_range(start="2013-01-01", periods=2, freq=offsets.FY5253(
57+
startingMonth=1, weekday=3, variation="nearest"))
58+
self.assertEqual(dr[0], Timestamp('2013-01-31'))
59+
self.assertEqual(dr[1], Timestamp('2014-01-30'))
60+
61+
def test_date_range_ambiguous_arguments(self):
62+
# #2538
63+
start = datetime(2011, 1, 1, 5, 3, 40)
64+
end = datetime(2011, 1, 1, 8, 9, 40)
65+
66+
self.assertRaises(ValueError, date_range, start, end, freq='s',
67+
periods=10)
68+
69+
def test_date_range_businesshour(self):
70+
idx = DatetimeIndex(['2014-07-04 09:00', '2014-07-04 10:00',
71+
'2014-07-04 11:00',
72+
'2014-07-04 12:00', '2014-07-04 13:00',
73+
'2014-07-04 14:00',
74+
'2014-07-04 15:00', '2014-07-04 16:00'],
75+
freq='BH')
76+
rng = date_range('2014-07-04 09:00', '2014-07-04 16:00', freq='BH')
77+
tm.assert_index_equal(idx, rng)
78+
79+
idx = DatetimeIndex(
80+
['2014-07-04 16:00', '2014-07-07 09:00'], freq='BH')
81+
rng = date_range('2014-07-04 16:00', '2014-07-07 09:00', freq='BH')
82+
tm.assert_index_equal(idx, rng)
83+
84+
idx = DatetimeIndex(['2014-07-04 09:00', '2014-07-04 10:00',
85+
'2014-07-04 11:00',
86+
'2014-07-04 12:00', '2014-07-04 13:00',
87+
'2014-07-04 14:00',
88+
'2014-07-04 15:00', '2014-07-04 16:00',
89+
'2014-07-07 09:00', '2014-07-07 10:00',
90+
'2014-07-07 11:00',
91+
'2014-07-07 12:00', '2014-07-07 13:00',
92+
'2014-07-07 14:00',
93+
'2014-07-07 15:00', '2014-07-07 16:00',
94+
'2014-07-08 09:00', '2014-07-08 10:00',
95+
'2014-07-08 11:00',
96+
'2014-07-08 12:00', '2014-07-08 13:00',
97+
'2014-07-08 14:00',
98+
'2014-07-08 15:00', '2014-07-08 16:00'],
99+
freq='BH')
100+
rng = date_range('2014-07-04 09:00', '2014-07-08 16:00', freq='BH')
101+
tm.assert_index_equal(idx, rng)
102+
103+
def test_range_misspecified(self):
104+
# GH #1095
105+
106+
self.assertRaises(ValueError, date_range, '1/1/2000')
107+
self.assertRaises(ValueError, date_range, end='1/1/2000')
108+
self.assertRaises(ValueError, date_range, periods=10)
109+
110+
self.assertRaises(ValueError, date_range, '1/1/2000', freq='H')
111+
self.assertRaises(ValueError, date_range, end='1/1/2000', freq='H')
112+
self.assertRaises(ValueError, date_range, periods=10, freq='H')

pandas/tests/indexes/datetimes/test_datetime.py

-68
Original file line numberDiff line numberDiff line change
@@ -457,74 +457,6 @@ def test_sort_values(self):
457457
self.assert_numpy_array_equal(dexer,
458458
np.array([0, 2, 1], dtype=np.intp))
459459

460-
def test_round(self):
461-
462-
# round
463-
dt = Timestamp('20130101 09:10:11')
464-
result = dt.round('D')
465-
expected = Timestamp('20130101')
466-
self.assertEqual(result, expected)
467-
468-
dt = Timestamp('20130101 19:10:11')
469-
result = dt.round('D')
470-
expected = Timestamp('20130102')
471-
self.assertEqual(result, expected)
472-
473-
dt = Timestamp('20130201 12:00:00')
474-
result = dt.round('D')
475-
expected = Timestamp('20130202')
476-
self.assertEqual(result, expected)
477-
478-
dt = Timestamp('20130104 12:00:00')
479-
result = dt.round('D')
480-
expected = Timestamp('20130105')
481-
self.assertEqual(result, expected)
482-
483-
dt = Timestamp('20130104 12:32:00')
484-
result = dt.round('30Min')
485-
expected = Timestamp('20130104 12:30:00')
486-
self.assertEqual(result, expected)
487-
488-
dti = date_range('20130101 09:10:11', periods=5)
489-
result = dti.round('D')
490-
expected = date_range('20130101', periods=5)
491-
tm.assert_index_equal(result, expected)
492-
493-
# floor
494-
dt = Timestamp('20130101 09:10:11')
495-
result = dt.floor('D')
496-
expected = Timestamp('20130101')
497-
self.assertEqual(result, expected)
498-
499-
# ceil
500-
dt = Timestamp('20130101 09:10:11')
501-
result = dt.ceil('D')
502-
expected = Timestamp('20130102')
503-
self.assertEqual(result, expected)
504-
505-
# round with tz
506-
dt = Timestamp('20130101 09:10:11', tz='US/Eastern')
507-
result = dt.round('D')
508-
expected = Timestamp('20130101', tz='US/Eastern')
509-
self.assertEqual(result, expected)
510-
511-
dt = Timestamp('20130101 09:10:11', tz='US/Eastern')
512-
result = dt.round('s')
513-
self.assertEqual(result, dt)
514-
515-
dti = date_range('20130101 09:10:11',
516-
periods=5).tz_localize('UTC').tz_convert('US/Eastern')
517-
result = dti.round('D')
518-
expected = date_range('20130101', periods=5).tz_localize('US/Eastern')
519-
tm.assert_index_equal(result, expected)
520-
521-
result = dti.round('s')
522-
tm.assert_index_equal(result, dti)
523-
524-
# invalid
525-
for freq in ['Y', 'M', 'foobar']:
526-
self.assertRaises(ValueError, lambda: dti.round(freq))
527-
528460
def test_take(self):
529461
dates = [datetime(2010, 1, 1, 14), datetime(2010, 1, 1, 15),
530462
datetime(2010, 1, 1, 17), datetime(2010, 1, 1, 21)]

0 commit comments

Comments
 (0)