add PartBuilder

This commit is contained in:
Looly
2024-12-16 10:26:45 +08:00
parent 6bcdce2d20
commit 4ad131777d
7 changed files with 495 additions and 109 deletions

View File

@@ -14,34 +14,52 @@
* limitations under the License.
*/
package org.dromara.hutool.cron.pattern;
package org.dromara.hutool.cron.pattern.builder;
import org.dromara.hutool.cron.CronException;
import org.dromara.hutool.cron.pattern.Part;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class CronPatternBuilderTest {
public class PatternBuilderTest {
@Test
public void buildMatchAllTest(){
String build = CronPatternBuilder.of().build();
String build = PatternBuilder.of().build();
Assertions.assertEquals("* * * * *", build);
build = CronPatternBuilder.of()
build = PatternBuilder.of()
.set(Part.SECOND, "*")
.build();
Assertions.assertEquals("* * * * * *", build);
build = CronPatternBuilder.of()
build = PatternBuilder.of()
.set(Part.SECOND, "*")
.set(Part.YEAR, "*")
.build();
Assertions.assertEquals("* * * * * * *", build);
}
@Test
public void buildMatchAllTest2(){
String build = PatternBuilder.of().build();
Assertions.assertEquals("* * * * *", build);
build = PatternBuilder.of()
.setSecond(PartBuilder.always())
.build();
Assertions.assertEquals("* * * * * *", build);
build = PatternBuilder.of()
.setSecond(PartBuilder.always())
.setYear(PartBuilder.always())
.build();
Assertions.assertEquals("* * * * * * *", build);
}
@Test
public void buildRangeTest(){
final String build = CronPatternBuilder.of()
final String build = PatternBuilder.of()
.set(Part.SECOND, "*")
.setRange(Part.HOUR, 2, 9)
.build();
@@ -51,7 +69,7 @@ public class CronPatternBuilderTest {
@Test
public void buildRangeErrorTest(){
Assertions.assertThrows(CronException.class, ()->{
final String build = CronPatternBuilder.of()
final String build = PatternBuilder.of()
.set(Part.SECOND, "*")
// 55无效值
.setRange(Part.HOUR, 2, 55)
@@ -59,4 +77,32 @@ public class CronPatternBuilderTest {
Assertions.assertEquals("* * 2-9 * * *", build);
});
}
@Test
public void buildValuesTest(){
final String build = PatternBuilder.of()
.setSecond(PartBuilder.always())
.setValues(Part.HOUR, 2, 9, 12)
.build();
Assertions.assertEquals("* * 2,9,12 * * *", build);
}
@Test
void buildOnTest(){
final String build = PatternBuilder.of()
.setSecond(PartBuilder.always())
.setHour(new PartBuilder.On(12))
.build();
Assertions.assertEquals("* * 12 * * *", build);
}
@Test
void buildEveryTest(){
final String build = PatternBuilder.of()
.setSecond(PartBuilder.always())
.setHour(new PartBuilder.Every(2))
.build();
Assertions.assertEquals("* * */2 * * *", build);
}
}

View File

@@ -14,10 +14,9 @@
* limitations under the License.
*/
package org.dromara.hutool.cron.pattern;
package org.dromara.hutool.cron.pattern.parser;
import org.dromara.hutool.cron.pattern.matcher.PatternMatcher;
import org.dromara.hutool.cron.pattern.parser.PatternParser;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;