package com.cronutils;

import com.cronutils.descriptor.CronDescriptor;
import com.cronutils.model.CronType;
import com.cronutils.model.definition.CronDefinitionBuilder;
import com.cronutils.parser.CronParser;
import org.junit.Ignore;
import org.junit.Test;

import java.util.Locale;

import static org.junit.Assert.assertEquals;

@Ignore
public class Issue403Test {
    @Test
    public void test() {
        CronParser parser = new CronParser( CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ));
        CronDescriptor cd = CronDescriptor.instance(Locale.US);
        assertEquals("every minute every 2 hours", cd.describe(parser.parse("0 * 0/2 * * ?")));
        assertEquals("every minute every hour every 2 days", cd.describe(parser.parse("0 * * 1/2 * ?")));
    }
}

@@ -158,129 +158,407 @@
 tion
-Builder;%0Aimport com.cronutils.parser.CronParser;%0Aimport org.junit.Ignore;%0Aimport org.junit.Test;%0A%0Aimport java.util.Locale
+;%0Aimport com.cronutils.model.definition.CronDefinitionBuilder;%0Aimport com.cronutils.model.time.ExecutionTime;%0Aimport com.cronutils.parser.CronParser;%0Aimport org.junit.Ignore;%0Aimport org.junit.Test;%0A%0Aimport java.time.Clock;%0Aimport java.time.Instant;%0Aimport java.time.ZoneId;%0Aimport java.time.ZonedDateTime;%0Aimport java.time.format.DateTimeFormatter;%0Aimport java.util.Locale;%0Aimport java.util.Optional
 ;%0A%0Ai
@@ -606,15 +606,8 @@
 s;%0A%0A
-@Ignore
 %0Apub
@@ -631,16 +631,28 @@
 3Test %7B%0A
+    @Ignore%0A
     @Tes
@@ -673,16 +673,21 @@
 oid test
+Case1
 () %7B%0A   
@@ -1061,11 +1061,1426 @@
 );%0A    %7D
+%0A%0A    @Test%0A    public void testCase2()%7B%0A        CronDefinition defaultDef = CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ);%0A        CronDescriptor descriptor = CronDescriptor.instance(Locale.CHINESE);%0A        CronParser parser = new CronParser(defaultDef);%0A%0A        String str = %220 * 0/2 * * ?%22;%0A%0A        ZonedDateTime now = ZonedDateTime.of(2019, 10, 30, 18, 8, 50, 0, ZoneId.of(%22US/Central%22));%0A        ExecutionTime executionTime = ExecutionTime.forCron(parser.parse(str));%0A        %0A        Optional%3CZonedDateTime%3E nextExecution = executionTime.nextExecution(now);%0A        assertEquals(%222019-10-30 18:09:00%22, nextExecution.get().format(DateTimeFormatter.ofPattern(%22yyyy-MM-dd HH:mm:ss%22)));%0A    %7D%0A%0A    @Test%0A    public void testCase3()%7B%0A        CronDefinition defaultDef = CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ);%0A        CronDescriptor descriptor = CronDescriptor.instance(Locale.CHINESE);%0A        CronParser parser = new CronParser(defaultDef);%0A%0A        String str = %220 0 0/2 * * ?%22;%0A%0A        ZonedDateTime now = ZonedDateTime.of(2019, 10, 30, 18, 8, 50, 0, ZoneId.of(%22US/Central%22));%0A        ExecutionTime executionTime = ExecutionTime.forCron(parser.parse(str));%0A        Optional%3CZonedDateTime%3E nextExecution = executionTime.nextExecution(now);%0A        assertEquals(%222019-10-30 20:00:00%22, nextExecution.get().format(DateTimeFormatter.ofPattern(%22yyyy-MM-dd HH:mm:ss%22)));%0A    %7D
 %0A%7D%0A

Add additional tests