Polish CronSequenceGenerator and tests
This commit is contained in:
parent
151530b93b
commit
4a4cd5bde8
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -95,7 +95,6 @@ public class CronSequenceGenerator {
|
|||
parse(expression);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the cron pattern that this sequence generator has been built for.
|
||||
*/
|
||||
|
|
@ -149,22 +148,6 @@ public class CronSequenceGenerator {
|
|||
return calendar.getTime();
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether the specified cron expression can be parsed into a
|
||||
* valid cron sequence generator
|
||||
* @param cronExpression the expression to evaluate
|
||||
* @return a boolean indicating whether the given expression is a valid cron
|
||||
* expression
|
||||
*/
|
||||
public static boolean isValidExpression(String cronExpression) {
|
||||
String[] fields = StringUtils.tokenizeToStringArray(cronExpression, " ");
|
||||
return validateCronFields(fields);
|
||||
}
|
||||
|
||||
private static boolean validateCronFields(String[] fields) {
|
||||
return fields != null && fields.length == 6;
|
||||
}
|
||||
|
||||
private void doNext(Calendar calendar, int dot) {
|
||||
List<Integer> resets = new ArrayList<Integer>();
|
||||
|
||||
|
|
@ -278,7 +261,7 @@ public class CronSequenceGenerator {
|
|||
*/
|
||||
private void parse(String expression) throws IllegalArgumentException {
|
||||
String[] fields = StringUtils.tokenizeToStringArray(expression, " ");
|
||||
if (!validateCronFields(fields)) {
|
||||
if (!areValidCronFields(fields)) {
|
||||
throw new IllegalArgumentException(String.format(
|
||||
"Cron expression must consist of 6 fields (found %d in \"%s\")", fields.length, expression));
|
||||
}
|
||||
|
|
@ -399,6 +382,23 @@ public class CronSequenceGenerator {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determine whether the specified expression represents a valid cron pattern.
|
||||
* <p>Specifically, this method verifies that the expression contains six
|
||||
* fields separated by single spaces.
|
||||
* @param expression the expression to evaluate
|
||||
* @return {@code true} if the given expression is a valid cron expression
|
||||
*/
|
||||
public static boolean isValidExpression(String expression) {
|
||||
String[] fields = StringUtils.tokenizeToStringArray(expression, " ");
|
||||
return areValidCronFields(fields);
|
||||
}
|
||||
|
||||
private static boolean areValidCronFields(String[] fields) {
|
||||
return (fields != null && fields.length == 6);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
if (this == other) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2015 the original author or authors.
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -29,45 +29,46 @@ import static org.junit.Assert.*;
|
|||
public class CronSequenceGeneratorTests {
|
||||
|
||||
@Test
|
||||
public void testAt50Seconds() {
|
||||
public void at50Seconds() {
|
||||
assertEquals(new Date(2012, 6, 2, 1, 0),
|
||||
new CronSequenceGenerator("*/15 * 1-4 * * *").next(new Date(2012, 6, 1, 9, 53, 50)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAt0Seconds() {
|
||||
public void at0Seconds() {
|
||||
assertEquals(new Date(2012, 6, 2, 1, 0),
|
||||
new CronSequenceGenerator("*/15 * 1-4 * * *").next(new Date(2012, 6, 1, 9, 53)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAt0Minutes() {
|
||||
public void at0Minutes() {
|
||||
assertEquals(new Date(2012, 6, 2, 1, 0),
|
||||
new CronSequenceGenerator("0 */2 1-4 * * *").next(new Date(2012, 6, 1, 9, 0)));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testWith0Increment() {
|
||||
public void with0Increment() {
|
||||
new CronSequenceGenerator("*/0 * * * * *").next(new Date(2012, 6, 1, 9, 0));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testWithNegativeIncrement() {
|
||||
public void withNegativeIncrement() {
|
||||
new CronSequenceGenerator("*/-1 * * * * *").next(new Date(2012, 6, 1, 9, 0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidExpression() {
|
||||
public void validExpression() {
|
||||
assertTrue(CronSequenceGenerator.isValidExpression("0 */2 1-4 * * *"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNotValidExpression() {
|
||||
public void invalidExpression() {
|
||||
assertFalse(CronSequenceGenerator.isValidExpression("0 */2 1-4 * * * *"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNullExpression() {
|
||||
public void nullExpression() {
|
||||
assertFalse(CronSequenceGenerator.isValidExpression(null));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue