Skip to content

Commit 4072d93

Browse files
author
TrigonaMinima
committed
TST: tseries/tests/test_timeseries.py tests moved to appropriate places.
1 parent dbfd2ba commit 4072d93

File tree

7 files changed

+3711
-3711
lines changed

7 files changed

+3711
-3711
lines changed

pandas/tests/indexes/datetimes/test_construction.py

+54-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,55 @@ 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)

pandas/tests/indexes/datetimes/test_misc.py

+138
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,126 @@ def test_pass_datetimeindex_to_index(self):
6565

6666
self.assert_numpy_array_equal(idx.values, expected.values)
6767

68+
def test_range_edges(self):
69+
# GH 13672
70+
idx = DatetimeIndex(start=Timestamp('1970-01-01 00:00:00.000000001'),
71+
end=Timestamp('1970-01-01 00:00:00.000000004'),
72+
freq='N')
73+
exp = DatetimeIndex(['1970-01-01 00:00:00.000000001',
74+
'1970-01-01 00:00:00.000000002',
75+
'1970-01-01 00:00:00.000000003',
76+
'1970-01-01 00:00:00.000000004'])
77+
tm.assert_index_equal(idx, exp)
78+
79+
idx = DatetimeIndex(start=Timestamp('1970-01-01 00:00:00.000000004'),
80+
end=Timestamp('1970-01-01 00:00:00.000000001'),
81+
freq='N')
82+
exp = DatetimeIndex([])
83+
tm.assert_index_equal(idx, exp)
84+
85+
idx = DatetimeIndex(start=Timestamp('1970-01-01 00:00:00.000000001'),
86+
end=Timestamp('1970-01-01 00:00:00.000000001'),
87+
freq='N')
88+
exp = DatetimeIndex(['1970-01-01 00:00:00.000000001'])
89+
tm.assert_index_equal(idx, exp)
90+
91+
idx = DatetimeIndex(start=Timestamp('1970-01-01 00:00:00.000001'),
92+
end=Timestamp('1970-01-01 00:00:00.000004'),
93+
freq='U')
94+
exp = DatetimeIndex(['1970-01-01 00:00:00.000001',
95+
'1970-01-01 00:00:00.000002',
96+
'1970-01-01 00:00:00.000003',
97+
'1970-01-01 00:00:00.000004'])
98+
tm.assert_index_equal(idx, exp)
99+
100+
idx = DatetimeIndex(start=Timestamp('1970-01-01 00:00:00.001'),
101+
end=Timestamp('1970-01-01 00:00:00.004'),
102+
freq='L')
103+
exp = DatetimeIndex(['1970-01-01 00:00:00.001',
104+
'1970-01-01 00:00:00.002',
105+
'1970-01-01 00:00:00.003',
106+
'1970-01-01 00:00:00.004'])
107+
tm.assert_index_equal(idx, exp)
108+
109+
idx = DatetimeIndex(start=Timestamp('1970-01-01 00:00:01'),
110+
end=Timestamp('1970-01-01 00:00:04'), freq='S')
111+
exp = DatetimeIndex(['1970-01-01 00:00:01', '1970-01-01 00:00:02',
112+
'1970-01-01 00:00:03', '1970-01-01 00:00:04'])
113+
tm.assert_index_equal(idx, exp)
114+
115+
idx = DatetimeIndex(start=Timestamp('1970-01-01 00:01'),
116+
end=Timestamp('1970-01-01 00:04'), freq='T')
117+
exp = DatetimeIndex(['1970-01-01 00:01', '1970-01-01 00:02',
118+
'1970-01-01 00:03', '1970-01-01 00:04'])
119+
tm.assert_index_equal(idx, exp)
120+
121+
idx = DatetimeIndex(start=Timestamp('1970-01-01 01:00'),
122+
end=Timestamp('1970-01-01 04:00'), freq='H')
123+
exp = DatetimeIndex(['1970-01-01 01:00', '1970-01-01 02:00',
124+
'1970-01-01 03:00', '1970-01-01 04:00'])
125+
tm.assert_index_equal(idx, exp)
126+
127+
idx = DatetimeIndex(start=Timestamp('1970-01-01'),
128+
end=Timestamp('1970-01-04'), freq='D')
129+
exp = DatetimeIndex(['1970-01-01', '1970-01-02',
130+
'1970-01-03', '1970-01-04'])
131+
tm.assert_index_equal(idx, exp)
132+
133+
def test_date_range_businesshour(self):
134+
idx = DatetimeIndex(['2014-07-04 09:00', '2014-07-04 10:00',
135+
'2014-07-04 11:00',
136+
'2014-07-04 12:00', '2014-07-04 13:00',
137+
'2014-07-04 14:00',
138+
'2014-07-04 15:00', '2014-07-04 16:00'],
139+
freq='BH')
140+
rng = date_range('2014-07-04 09:00', '2014-07-04 16:00', freq='BH')
141+
tm.assert_index_equal(idx, rng)
142+
143+
idx = DatetimeIndex(
144+
['2014-07-04 16:00', '2014-07-07 09:00'], freq='BH')
145+
rng = date_range('2014-07-04 16:00', '2014-07-07 09:00', freq='BH')
146+
tm.assert_index_equal(idx, rng)
147+
148+
idx = DatetimeIndex(['2014-07-04 09:00', '2014-07-04 10:00',
149+
'2014-07-04 11:00',
150+
'2014-07-04 12:00', '2014-07-04 13:00',
151+
'2014-07-04 14:00',
152+
'2014-07-04 15:00', '2014-07-04 16:00',
153+
'2014-07-07 09:00', '2014-07-07 10:00',
154+
'2014-07-07 11:00',
155+
'2014-07-07 12:00', '2014-07-07 13:00',
156+
'2014-07-07 14:00',
157+
'2014-07-07 15:00', '2014-07-07 16:00',
158+
'2014-07-08 09:00', '2014-07-08 10:00',
159+
'2014-07-08 11:00',
160+
'2014-07-08 12:00', '2014-07-08 13:00',
161+
'2014-07-08 14:00',
162+
'2014-07-08 15:00', '2014-07-08 16:00'],
163+
freq='BH')
164+
rng = date_range('2014-07-04 09:00', '2014-07-08 16:00', freq='BH')
165+
tm.assert_index_equal(idx, rng)
166+
167+
def test_datetimeindex_integers_shift(self):
168+
rng = date_range('1/1/2000', periods=20)
169+
170+
result = rng + 5
171+
expected = rng.shift(5)
172+
tm.assert_index_equal(result, expected)
173+
174+
result = rng - 5
175+
expected = rng.shift(-5)
176+
tm.assert_index_equal(result, expected)
177+
178+
def test_datetimeindex_repr_short(self):
179+
dr = date_range(start='1/1/2012', periods=1)
180+
repr(dr)
181+
182+
dr = date_range(start='1/1/2012', periods=2)
183+
repr(dr)
184+
185+
dr = date_range(start='1/1/2012', periods=3)
186+
repr(dr)
187+
68188

69189
class TestDatetime64(tm.TestCase):
70190

@@ -331,3 +451,21 @@ def test_datetimeindex_union_join_empty(self):
331451

332452
result = dti.join(empty)
333453
tm.assertIsInstance(result, DatetimeIndex)
454+
455+
456+
class TestTimeSeriesDuplicates(tm.TestCase):
457+
_multiprocess_can_split_ = True
458+
459+
def test_recreate_from_data(self):
460+
freqs = ['M', 'Q', 'A', 'D', 'B', 'BH', 'T', 'S', 'L', 'U', 'H', 'N',
461+
'C']
462+
463+
for f in freqs:
464+
org = DatetimeIndex(start='2001/02/01 09:00', freq=f, periods=1)
465+
idx = DatetimeIndex(org, freq=f)
466+
tm.assert_index_equal(idx, org)
467+
468+
org = DatetimeIndex(start='2001/02/01 09:00', freq=f,
469+
tz='US/Pacific', periods=1)
470+
idx = DatetimeIndex(org, freq=f, tz='US/Pacific')
471+
tm.assert_index_equal(idx, org)
+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import numpy as np
2+
from datetime import timedelta
3+
4+
import pandas as pd
5+
import pandas.util.testing as tm
6+
from pandas import (timedelta_range, date_range, Series, Timedelta,
7+
DatetimeIndex)
8+
9+
10+
class TestSlicing(tm.TestCase):
11+
12+
def test_timedelta(self):
13+
# this is valid too
14+
index = date_range('1/1/2000', periods=50, freq='B')
15+
shifted = index + timedelta(1)
16+
back = shifted + timedelta(-1)
17+
self.assertTrue(tm.equalContents(index, back))
18+
self.assertEqual(shifted.freq, index.freq)
19+
self.assertEqual(shifted.freq, back.freq)
20+
21+
result = index - timedelta(1)
22+
expected = index + timedelta(-1)
23+
tm.assert_index_equal(result, expected)
24+
25+
# GH4134, buggy with timedeltas
26+
rng = date_range('2013', '2014')
27+
s = Series(rng)
28+
result1 = rng - pd.offsets.Hour(1)
29+
result2 = DatetimeIndex(s - np.timedelta64(100000000))
30+
result3 = rng - np.timedelta64(100000000)
31+
result4 = DatetimeIndex(s - pd.offsets.Hour(1))
32+
tm.assert_index_equal(result1, result4)
33+
tm.assert_index_equal(result2, result3)
34+
35+
36+
class TestTimeSeries(tm.TestCase):
37+
_multiprocess_can_split_ = True
38+
39+
def test_series_box_timedelta(self):
40+
rng = timedelta_range('1 day 1 s', periods=5, freq='h')
41+
s = Series(rng)
42+
tm.assertIsInstance(s[1], Timedelta)
43+
tm.assertIsInstance(s.iat[2], Timedelta)

pandas/tests/scalar/test_timestamp.py

+125-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from pandas.util.testing import assert_series_equal
1717
from pandas.compat.numpy import np_datetime64_compat
1818
from pandas import (Timestamp, date_range, Period, Timedelta, tslib, compat,
19-
Series, NaT, isnull, DataFrame)
19+
Series, NaT, isnull, DataFrame, DatetimeIndex)
2020
from pandas.tseries.frequencies import (RESO_DAY, RESO_HR, RESO_MIN, RESO_US,
2121
RESO_MS, RESO_SEC)
2222

@@ -1364,3 +1364,127 @@ def test_compare_hour01(self):
13641364
def test_compare_hour13(self):
13651365
r = Timestamp('2000-08-12T13:00:00').to_julian_date()
13661366
self.assertEqual(r, 2451769.0416666666666666)
1367+
1368+
1369+
class TestTimeSeries(tm.TestCase):
1370+
_multiprocess_can_split_ = True
1371+
1372+
def test_timestamp_to_datetime(self):
1373+
tm._skip_if_no_pytz()
1374+
rng = date_range('20090415', '20090519', tz='US/Eastern')
1375+
1376+
stamp = rng[0]
1377+
dtval = stamp.to_pydatetime()
1378+
self.assertEqual(stamp, dtval)
1379+
self.assertEqual(stamp.tzinfo, dtval.tzinfo)
1380+
1381+
def test_timestamp_to_datetime_dateutil(self):
1382+
tm._skip_if_no_pytz()
1383+
rng = date_range('20090415', '20090519', tz='dateutil/US/Eastern')
1384+
1385+
stamp = rng[0]
1386+
dtval = stamp.to_pydatetime()
1387+
self.assertEqual(stamp, dtval)
1388+
self.assertEqual(stamp.tzinfo, dtval.tzinfo)
1389+
1390+
def test_timestamp_to_datetime_explicit_pytz(self):
1391+
tm._skip_if_no_pytz()
1392+
import pytz
1393+
rng = date_range('20090415', '20090519',
1394+
tz=pytz.timezone('US/Eastern'))
1395+
1396+
stamp = rng[0]
1397+
dtval = stamp.to_pydatetime()
1398+
self.assertEqual(stamp, dtval)
1399+
self.assertEqual(stamp.tzinfo, dtval.tzinfo)
1400+
1401+
def test_timestamp_to_datetime_explicit_dateutil(self):
1402+
tm._skip_if_windows_python_3()
1403+
tm._skip_if_no_dateutil()
1404+
from pandas.tslib import _dateutil_gettz as gettz
1405+
rng = date_range('20090415', '20090519', tz=gettz('US/Eastern'))
1406+
1407+
stamp = rng[0]
1408+
dtval = stamp.to_pydatetime()
1409+
self.assertEqual(stamp, dtval)
1410+
self.assertEqual(stamp.tzinfo, dtval.tzinfo)
1411+
1412+
def test_timestamp_fields(self):
1413+
# extra fields from DatetimeIndex like quarter and week
1414+
idx = tm.makeDateIndex(100)
1415+
1416+
fields = ['dayofweek', 'dayofyear', 'week', 'weekofyear', 'quarter',
1417+
'days_in_month', 'is_month_start', 'is_month_end',
1418+
'is_quarter_start', 'is_quarter_end', 'is_year_start',
1419+
'is_year_end', 'weekday_name']
1420+
for f in fields:
1421+
expected = getattr(idx, f)[-1]
1422+
result = getattr(Timestamp(idx[-1]), f)
1423+
self.assertEqual(result, expected)
1424+
1425+
self.assertEqual(idx.freq, Timestamp(idx[-1], idx.freq).freq)
1426+
self.assertEqual(idx.freqstr, Timestamp(idx[-1], idx.freq).freqstr)
1427+
1428+
def test_timestamp_date_out_of_range(self):
1429+
self.assertRaises(ValueError, Timestamp, '1676-01-01')
1430+
self.assertRaises(ValueError, Timestamp, '2263-01-01')
1431+
1432+
# 1475
1433+
self.assertRaises(ValueError, DatetimeIndex, ['1400-01-01'])
1434+
self.assertRaises(ValueError, DatetimeIndex, [datetime(1400, 1, 1)])
1435+
1436+
def test_timestamp_repr(self):
1437+
# pre-1900
1438+
stamp = Timestamp('1850-01-01', tz='US/Eastern')
1439+
repr(stamp)
1440+
1441+
iso8601 = '1850-01-01 01:23:45.012345'
1442+
stamp = Timestamp(iso8601, tz='US/Eastern')
1443+
result = repr(stamp)
1444+
self.assertIn(iso8601, result)
1445+
1446+
def test_timestamp_from_ordinal(self):
1447+
1448+
# GH 3042
1449+
dt = datetime(2011, 4, 16, 0, 0)
1450+
ts = Timestamp.fromordinal(dt.toordinal())
1451+
self.assertEqual(ts.to_pydatetime(), dt)
1452+
1453+
# with a tzinfo
1454+
stamp = Timestamp('2011-4-16', tz='US/Eastern')
1455+
dt_tz = stamp.to_pydatetime()
1456+
ts = Timestamp.fromordinal(dt_tz.toordinal(), tz='US/Eastern')
1457+
self.assertEqual(ts.to_pydatetime(), dt_tz)
1458+
1459+
def test_timestamp_compare_with_early_datetime(self):
1460+
# e.g. datetime.min
1461+
stamp = Timestamp('2012-01-01')
1462+
1463+
self.assertFalse(stamp == datetime.min)
1464+
self.assertFalse(stamp == datetime(1600, 1, 1))
1465+
self.assertFalse(stamp == datetime(2700, 1, 1))
1466+
self.assertNotEqual(stamp, datetime.min)
1467+
self.assertNotEqual(stamp, datetime(1600, 1, 1))
1468+
self.assertNotEqual(stamp, datetime(2700, 1, 1))
1469+
self.assertTrue(stamp > datetime(1600, 1, 1))
1470+
self.assertTrue(stamp >= datetime(1600, 1, 1))
1471+
self.assertTrue(stamp < datetime(2700, 1, 1))
1472+
self.assertTrue(stamp <= datetime(2700, 1, 1))
1473+
1474+
def test_timestamp_equality(self):
1475+
1476+
# GH 11034
1477+
s = Series([Timestamp('2000-01-29 01:59:00'), 'NaT'])
1478+
result = s != s
1479+
assert_series_equal(result, Series([False, True]))
1480+
result = s != s[0]
1481+
assert_series_equal(result, Series([False, True]))
1482+
result = s != s[1]
1483+
assert_series_equal(result, Series([True, True]))
1484+
1485+
result = s == s
1486+
assert_series_equal(result, Series([True, False]))
1487+
result = s == s[0]
1488+
assert_series_equal(result, Series([True, False]))
1489+
result = s == s[1]
1490+
assert_series_equal(result, Series([False, False]))

0 commit comments

Comments
 (0)