package com.cronutils;

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

import java.time.ZonedDateTime;
import java.util.Optional;

class Issue528Test {

    static final CronDefinition REBOOT_CRON_DEFINITION = CronDefinitionBuilder.defineCron()
            .withSupportedNicknameReboot()
            .instance();

    @Test
    void testRebootExecutionTime() {
        Cron cron = new CronParser(REBOOT_CRON_DEFINITION).parse("@reboot");
        ExecutionTime executionTime = ExecutionTime.forCron(cron);
        Assertions.assertEquals(Optional.empty(), executionTime.nextExecution(ZonedDateTime.now()));
        Assertions.assertEquals(Optional.empty(), executionTime.lastExecution(ZonedDateTime.now()));
    }
}

@@ -17,16 +17,104 @@
 utils;%0A%0A
+import com.cronutils.descriptor.CronDescriptor;%0Aimport com.cronutils.mapper.CronMapper;%0A
 import c
@@ -134,24 +134,24 @@
 model.Cron;%0A
-
 import com.c
@@ -445,24 +445,49 @@
 edDateTime;%0A
+import java.util.Locale;%0A
 import java.
@@ -973,24 +973,24 @@
 me.now()));%0A
-
         Asse
@@ -1083,11 +1083,1096 @@
 );%0A    %7D
+%0A%0A    @Test%0A    void testCronDescriptor() %7B%0A        Cron cron = new CronParser(REBOOT_CRON_DEFINITION).parse(%22@reboot%22);%0A        String description = CronDescriptor.instance(Locale.UK).describe(cron);%0A        Assertions.assertEquals(%22on reboot%22, description);%0A    %7D%0A%0A%0A    @Test%0A    void testCronMapper() %7B%0A        Cron cron = new CronParser(REBOOT_CRON_DEFINITION).parse(%22@reboot%22);%0A        CronDefinition unix = CronDefinitionBuilder.defineCron()%0A                .withMinutes().withValidRange(0, 59).withStrictRange().and()%0A                .withHours().withValidRange(0, 23).withStrictRange().and()%0A                .withDayOfMonth().withValidRange(1, 31).withStrictRange().and()%0A                .withMonth().withValidRange(1, 12).withStrictRange().and()%0A                .withDayOfWeek().withValidRange(0, 7).withMondayDoWValue(1).withIntMapping(7, 0).withStrictRange().and()%0A                .withSupportedNicknameReboot()%0A                .instance();%0A        Cron mapped = CronMapper.sameCron(unix).map(cron);%0A        Assertions.assertEquals(cron.asString(), mapped.asString());%0A    %7D
 %0A%7D%0A

Add unit tests for CronDescriptor & CronMapper