Skip to content

Commit d3ff628

Browse files
committed
add tests and asv for newly implemented methods
1 parent 19231e1 commit d3ff628

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

asv_bench/benchmarks/offset.py

+19
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,25 @@ def time_apply_series(self, param):
3838
self.ser + self.offset
3939

4040

41+
class OnOffset(object):
42+
goal_time = 0.2
43+
44+
params = [pd.offsets.QuarterBegin(), pd.offsets.QuarterEnd(),
45+
pd.offsets.BQuarterBegin(), pd.offsets.BQuarterEnd()]
46+
param_names = ['offset']
47+
48+
def setup(self, offset):
49+
self.offset = offset
50+
self.dates = [datetime(2016, m, d)
51+
for m in [10, 11, 12]
52+
for d in [1, 2, 3, 28, 29, 30, 31]
53+
if not (m == 11 and d == 31)]
54+
55+
def time_on_offset(self, offset):
56+
for date in self.dates:
57+
self.offset.onOffset(date)
58+
59+
4160
class DatetimeIndexArithmetic(object):
4261
goal_time = 0.2
4362

pandas/tests/tseries/offsets/test_yqm_offsets.py

+31
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import pytest
88

9+
import pandas as pd
910
from pandas import Timestamp
1011
from pandas import compat
1112

@@ -32,6 +33,36 @@ def test_quarterly_dont_normalize():
3233
assert (result.time() == date.time())
3334

3435

36+
37+
@pytest.mark.parametrize('offset', [MonthBegin(), MonthEnd(),
38+
BMonthBegin(), BMonthEnd()])
39+
def test_apply_index(offset):
40+
rng = pd.date_range(start='1/1/2000', periods=100000, freq='T')
41+
ser = pd.Series(rng)
42+
43+
res = rng + offset
44+
res_v2 = offset.apply_index(rng)
45+
assert (res == res_v2).all()
46+
assert res[0] == rng[0] + offset
47+
assert res[-1] == rng[-1] + offset
48+
res2 = ser + offset
49+
# apply_index is only for indexes, not series, so no res2_v2
50+
assert res2.iloc[0] == ser.iloc[0] + offset
51+
assert res2.iloc[-1] == ser.iloc[-1] + offset
52+
53+
54+
@pytest.mark.parametrize('offset', [QuarterBegin(), QuarterEnd(),
55+
BQuarterBegin(), BQuarterEnd()])
56+
def test_on_offset(offset):
57+
dates = [datetime(2016, m, d)
58+
for m in [10, 11, 12]
59+
for d in [1, 2, 3, 28, 29, 30, 31] if not (m == 11 and d == 31)]
60+
for date in dates:
61+
res = offset.onOffset(date)
62+
slow_version = date == (date + offset) - offset
63+
assert res == slow_version
64+
65+
3566
# --------------------------------------------------------------------
3667
# Months
3768

0 commit comments

Comments
 (0)