Issue319Test.java

package com.cronutils;

import com.cronutils.model.Cron;
import com.cronutils.model.CronType;
import com.cronutils.model.definition.CronDefinitionBuilder;
import com.cronutils.model.time.ExecutionTime;
import com.cronutils.parser.CronParser;
import org.junit.jupiter.api.Test;

import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Issue319Test {
    @Test
    // Daylightsaving change in EU is - 2018-03-25T02:00
    // - Bug319: endless loop/fails/hangs at 2018-03-25T02:00 and 2018-03-26T02:00
    public void testPreviousClosestMatchDailightSavingsChangeBug319_loop() {
        CronParser cronparser = new CronParser(CronDefinitionBuilder.instanceDefinitionFor(CronType.UNIX));
        for (int month = 1; month < 13; month++) {
            for (int day = 1; day < 29; day++) {
                ZonedDateTime date = ZonedDateTime.of(2018, month, day, 2, 00, 00, 0, ZoneId.of("Europe/Berlin"));
                System.out.print(date);
                Cron cron = cronparser.parse("00 02 * * * ");
                ExecutionTime exectime = ExecutionTime.forCron(cron);
                ZonedDateTime lastrun = exectime.lastExecution(date).get();
                System.out.println("-ok");
            }
        }
    }
}