|
31 | 31 | import java.util.TimeZone;
|
32 | 32 |
|
33 | 33 | import static org.dmfs.jems2.hamcrest.matchers.iterable.IterableMatcher.iteratesTo;
|
| 34 | +import static org.dmfs.rfc5545.recur.Freq.MONTHLY; |
| 35 | +import static org.dmfs.rfc5545.recur.RecurrenceRule.Part.BYMONTHDAY; |
34 | 36 | import static org.hamcrest.MatcherAssert.assertThat;
|
35 | 37 |
|
36 | 38 |
|
@@ -161,4 +163,51 @@ void testWithDuplicates() throws InvalidRecurrenceRuleException
|
161 | 163 | DateTime.parse("20220125")
|
162 | 164 | ));
|
163 | 165 | }
|
| 166 | + |
| 167 | + |
| 168 | + @Test |
| 169 | + void testFastForwardedWithInstanceList() throws InvalidRecurrenceRuleException |
| 170 | + { |
| 171 | + assertThat(new RecurrenceSet(DateTime.parse("20220101"), |
| 172 | + new FastForwarded(DateTime.parse("20220111"), |
| 173 | + new InstanceList("20220110,20220118", DateTime.UTC), |
| 174 | + new RuleInstances(new RecurrenceRule("FREQ=WEEKLY;BYDAY=SA;COUNT=5")) |
| 175 | + ) |
| 176 | + ), |
| 177 | + iteratesTo( |
| 178 | + DateTime.parse("20220115"), |
| 179 | + DateTime.parse("20220118"), |
| 180 | + DateTime.parse("20220122"), |
| 181 | + DateTime.parse("20220129") |
| 182 | + )); |
| 183 | + } |
| 184 | + |
| 185 | + /** |
| 186 | + * https://github.com/dmfs/lib-recur/issues/125 |
| 187 | + */ |
| 188 | + @Test |
| 189 | + void testIssue125() throws InvalidRecurrenceRuleException |
| 190 | + { |
| 191 | + |
| 192 | + RecurrenceRule rrule = new RecurrenceRule(MONTHLY); |
| 193 | + rrule.setByPart(BYMONTHDAY, 10); |
| 194 | + rrule.setCount(5); |
| 195 | + |
| 196 | + long[] rdates = new long[] { 1689379200000L, 1692057600000L }; // 2023-07-15, 2023-08-15 |
| 197 | + |
| 198 | + |
| 199 | + assertThat( |
| 200 | + new RecurrenceSet(new DateTime(2023, 7, 1), // 2023-08-01 |
| 201 | + new FastForwarded(new DateTime(2023, 7, 1), // 2023-08-01 |
| 202 | + new InstanceList(rdates), |
| 203 | + new RuleInstances(rrule))), |
| 204 | + iteratesTo( |
| 205 | + DateTime.parse("20230810"), |
| 206 | + DateTime.parse("20230815"), |
| 207 | + DateTime.parse("20230910"), |
| 208 | + DateTime.parse("20231010"), |
| 209 | + DateTime.parse("20231110"), |
| 210 | + DateTime.parse("20231210") |
| 211 | + )); |
| 212 | + } |
164 | 213 | }
|
0 commit comments