@@ -1106,6 +1106,38 @@ def test_sub(self):
1106
1106
with pytest .raises (period .IncompatibleFrequency , match = msg ):
1107
1107
per1 - Period ('2011-02' , freq = 'M' )
1108
1108
1109
+ @pytest .mark .parametrize ('n' , [1 , 2 , 3 , 4 ])
1110
+ def test_sub_n_gt_1_ticks (self , tick_classes , n ):
1111
+ # GH 23878
1112
+ p1 = pd .Period ('19910905' , freq = tick_classes (n ))
1113
+ p2 = pd .Period ('19920406' , freq = tick_classes (n ))
1114
+
1115
+ expected = (pd .Period (str (p2 ), freq = p2 .freq .base )
1116
+ - pd .Period (str (p1 ), freq = p1 .freq .base ))
1117
+
1118
+ assert (p2 - p1 ) == expected
1119
+
1120
+ @pytest .mark .parametrize ('normalize' , [True , False ])
1121
+ @pytest .mark .parametrize ('n' , [1 , 2 , 3 , 4 ])
1122
+ @pytest .mark .parametrize ('offset, kwd_name' , [
1123
+ (pd .offsets .YearEnd , 'month' ),
1124
+ (pd .offsets .QuarterEnd , 'startingMonth' ),
1125
+ (pd .offsets .MonthEnd , None ),
1126
+ (pd .offsets .Week , 'weekday' )
1127
+ ])
1128
+ def test_sub_n_gt_1_offsets (self , offset , kwd_name , n , normalize ):
1129
+ # GH 23878
1130
+ kwds = {kwd_name : 3 } if kwd_name is not None else {}
1131
+ p1_d = '19910905'
1132
+ p2_d = '19920406'
1133
+ p1 = pd .Period (p1_d , freq = offset (n , normalize , ** kwds ))
1134
+ p2 = pd .Period (p2_d , freq = offset (n , normalize , ** kwds ))
1135
+
1136
+ expected = (pd .Period (p2_d , freq = p2 .freq .base )
1137
+ - pd .Period (p1_d , freq = p1 .freq .base ))
1138
+
1139
+ assert (p2 - p1 ) == expected
1140
+
1109
1141
def test_add_offset (self ):
1110
1142
# freq is DateOffset
1111
1143
for freq in ['A' , '2A' , '3A' ]:
0 commit comments