24
24
_testing as tm ,
25
25
)
26
26
from pandas .tests .tseries .offsets .common import (
27
- Base ,
28
27
assert_is_on_offset ,
29
28
assert_offset_equal ,
30
29
)
31
30
32
31
from pandas .tseries import offsets as offsets
33
32
34
33
35
- class TestBusinessDay (Base ):
36
- _offset : type [BDay ] = BDay
34
+ @pytest .fixture
35
+ def dt ():
36
+ return datetime (2008 , 1 , 1 )
37
37
38
- def setup_method (self ):
39
- self .d = datetime (2008 , 1 , 1 )
40
- self .nd = np .datetime64 ("2008-01-01 00:00:00" )
41
38
42
- self . offset = self . _offset ()
43
- self . offset1 = self . offset
44
- self . offset2 = self . _offset ( 2 )
39
+ @ pytest . fixture
40
+ def _offset ():
41
+ return BDay
45
42
46
- def test_different_normalize_equals (self ):
43
+
44
+ @pytest .fixture
45
+ def offset (_offset ):
46
+ return _offset ()
47
+
48
+
49
+ @pytest .fixture
50
+ def offset2 (_offset ):
51
+ return _offset (2 )
52
+
53
+
54
+ class TestBusinessDay :
55
+ def test_different_normalize_equals (self , _offset , offset2 ):
47
56
# GH#21404 changed __eq__ to return False when `normalize` does not match
48
- offset = self . _offset ()
49
- offset2 = self . _offset (normalize = True )
57
+ offset = _offset ()
58
+ offset2 = _offset (normalize = True )
50
59
assert offset != offset2
51
60
52
- def test_repr (self ):
53
- assert repr (self . offset ) == "<BusinessDay>"
54
- assert repr (self . offset2 ) == "<2 * BusinessDays>"
61
+ def test_repr (self , offset , offset2 ):
62
+ assert repr (offset ) == "<BusinessDay>"
63
+ assert repr (offset2 ) == "<2 * BusinessDays>"
55
64
56
65
expected = "<BusinessDay: offset=datetime.timedelta(days=1)>"
57
- assert repr (self . offset + timedelta (1 )) == expected
66
+ assert repr (offset + timedelta (1 )) == expected
58
67
59
- def test_with_offset (self ):
60
- offset = self . offset + timedelta (hours = 2 )
68
+ def test_with_offset (self , dt , offset ):
69
+ offset = offset + timedelta (hours = 2 )
61
70
62
- assert (self . d + offset ) == datetime (2008 , 1 , 2 , 2 )
71
+ assert (dt + offset ) == datetime (2008 , 1 , 2 , 2 )
63
72
64
73
@pytest .mark .parametrize (
65
74
"td" ,
@@ -70,49 +79,42 @@ def test_with_offset(self):
70
79
],
71
80
ids = lambda x : type (x ),
72
81
)
73
- def test_with_offset_index (self , td ):
82
+ def test_with_offset_index (self , td , dt , offset ):
74
83
75
- dti = DatetimeIndex ([self . d ])
84
+ dti = DatetimeIndex ([dt ])
76
85
expected = DatetimeIndex ([datetime (2008 , 1 , 2 , 2 )])
77
86
78
- result = dti + (td + self . offset )
87
+ result = dti + (td + offset )
79
88
tm .assert_index_equal (result , expected )
80
89
81
- result = dti + (self . offset + td )
90
+ result = dti + (offset + td )
82
91
tm .assert_index_equal (result , expected )
83
92
84
- def test_eq (self ):
85
- assert self .offset2 == self .offset2
86
-
87
- def test_mul (self ):
88
- pass
93
+ def test_eq (self , offset2 ):
94
+ assert offset2 == offset2
89
95
90
- def test_hash (self ):
91
- assert hash (self . offset2 ) == hash (self . offset2 )
96
+ def test_hash (self , offset2 ):
97
+ assert hash (offset2 ) == hash (offset2 )
92
98
93
- def test_call (self ):
99
+ def test_call (self , dt , offset2 ):
94
100
with tm .assert_produces_warning (FutureWarning ):
95
101
# GH#34171 DateOffset.__call__ is deprecated
96
- assert self . offset2 (self . d ) == datetime (2008 , 1 , 3 )
97
- assert self . offset2 (self . nd ) == datetime (2008 , 1 , 3 )
102
+ assert offset2 (dt ) == datetime (2008 , 1 , 3 )
103
+ assert offset2 (np . datetime64 ( "2008-01-01 00:00:00" ) ) == datetime (2008 , 1 , 3 )
98
104
99
- def testRollback1 (self ):
100
- assert self . _offset (10 ).rollback (self . d ) == self . d
105
+ def testRollback1 (self , dt , _offset ):
106
+ assert _offset (10 ).rollback (dt ) == dt
101
107
102
- def testRollback2 (self ):
103
- assert self . _offset (10 ).rollback (datetime (2008 , 1 , 5 )) == datetime (2008 , 1 , 4 )
108
+ def testRollback2 (self , _offset ):
109
+ assert _offset (10 ).rollback (datetime (2008 , 1 , 5 )) == datetime (2008 , 1 , 4 )
104
110
105
- def testRollforward1 (self ):
106
- assert self . _offset (10 ).rollforward (self . d ) == self . d
111
+ def testRollforward1 (self , dt , _offset ):
112
+ assert _offset (10 ).rollforward (dt ) == dt
107
113
108
- def testRollforward2 (self ):
109
- assert self ._offset (10 ).rollforward (datetime (2008 , 1 , 5 )) == datetime (
110
- 2008 , 1 , 7
111
- )
112
-
113
- def test_roll_date_object (self ):
114
- offset = self ._offset ()
114
+ def testRollforward2 (self , _offset ):
115
+ assert _offset (10 ).rollforward (datetime (2008 , 1 , 5 )) == datetime (2008 , 1 , 7 )
115
116
117
+ def test_roll_date_object (self , offset ):
116
118
dt = date (2012 , 9 , 15 )
117
119
118
120
result = offset .rollback (dt )
@@ -128,14 +130,15 @@ def test_roll_date_object(self):
128
130
result = offset .rollforward (dt )
129
131
assert result == datetime (2012 , 9 , 15 )
130
132
131
- def test_is_on_offset (self ):
132
- tests = [
133
- (self ._offset (), datetime (2008 , 1 , 1 ), True ),
134
- (self ._offset (), datetime (2008 , 1 , 5 ), False ),
135
- ]
136
-
137
- for offset , d , expected in tests :
138
- assert_is_on_offset (offset , d , expected )
133
+ @pytest .mark .parametrize (
134
+ "dt, expected" ,
135
+ [
136
+ (datetime (2008 , 1 , 1 ), True ),
137
+ (datetime (2008 , 1 , 5 ), False ),
138
+ ],
139
+ )
140
+ def test_is_on_offset (self , offset , dt , expected ):
141
+ assert_is_on_offset (offset , dt , expected )
139
142
140
143
apply_cases : list [tuple [int , dict [datetime , datetime ]]] = [
141
144
(
@@ -194,22 +197,22 @@ def test_is_on_offset(self):
194
197
]
195
198
196
199
@pytest .mark .parametrize ("case" , apply_cases )
197
- def test_apply (self , case ):
200
+ def test_apply (self , case , _offset ):
198
201
n , cases = case
199
- offset = self . _offset (n )
202
+ offset = _offset (n )
200
203
for base , expected in cases .items ():
201
204
assert_offset_equal (offset , base , expected )
202
205
203
- def test_apply_large_n (self ):
206
+ def test_apply_large_n (self , _offset ):
204
207
dt = datetime (2012 , 10 , 23 )
205
208
206
- result = dt + self . _offset (10 )
209
+ result = dt + _offset (10 )
207
210
assert result == datetime (2012 , 11 , 6 )
208
211
209
- result = dt + self . _offset (100 ) - self . _offset (100 )
212
+ result = dt + _offset (100 ) - _offset (100 )
210
213
assert result == dt
211
214
212
- off = self . _offset () * 6
215
+ off = _offset () * 6
213
216
rs = datetime (2012 , 1 , 1 ) - off
214
217
xp = datetime (2011 , 12 , 23 )
215
218
assert rs == xp
@@ -219,18 +222,18 @@ def test_apply_large_n(self):
219
222
xp = datetime (2011 , 12 , 26 )
220
223
assert rs == xp
221
224
222
- off = self . _offset () * 10
225
+ off = _offset () * 10
223
226
rs = datetime (2014 , 1 , 5 ) + off # see #5890
224
227
xp = datetime (2014 , 1 , 17 )
225
228
assert rs == xp
226
229
227
- def test_apply_corner (self ):
228
- if self . _offset is BDay :
230
+ def test_apply_corner (self , _offset ):
231
+ if _offset is BDay :
229
232
msg = "Only know how to combine business day with datetime or timedelta"
230
233
else :
231
234
msg = (
232
235
"Only know how to combine trading day "
233
236
"with datetime, datetime64 or timedelta"
234
237
)
235
238
with pytest .raises (ApplyTypeError , match = msg ):
236
- self . _offset ()._apply (BMonthEnd ())
239
+ _offset ()._apply (BMonthEnd ())
0 commit comments