This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit d983389d9d9eb2cb8d5f218eba6abbe27b04a72c Author: Benoit Tellier <[email protected]> AuthorDate: Tue Mar 26 11:16:37 2019 +0700 JAMES-2702 Improve DurationParser tests - Rely on parametrized tests - Rename out of date methods - Add some edge cases tests --- server/container/util/pom.xml | 5 + .../java/org/apache/james/util/DurationParser.java | 2 +- .../org/apache/james/util/DurationParserTest.java | 164 ++++++++------------- 3 files changed, 67 insertions(+), 104 deletions(-) diff --git a/server/container/util/pom.xml b/server/container/util/pom.xml index 9177ff6..e14c5f1 100644 --- a/server/container/util/pom.xml +++ b/server/container/util/pom.xml @@ -94,6 +94,11 @@ <scope>test</scope> </dependency> <dependency> + <groupId>org.junit.jupiter</groupId> + <artifactId>junit-jupiter-params</artifactId> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <scope>test</scope> diff --git a/server/container/util/src/main/java/org/apache/james/util/DurationParser.java b/server/container/util/src/main/java/org/apache/james/util/DurationParser.java index f30fb6d..6a562f9 100644 --- a/server/container/util/src/main/java/org/apache/james/util/DurationParser.java +++ b/server/container/util/src/main/java/org/apache/james/util/DurationParser.java @@ -40,7 +40,7 @@ public class DurationParser { private enum Unit { MILLI_SECONDS(ImmutableList.of("ms", "msec", "msecs"), ChronoUnit.MILLIS), - SECONDS(ImmutableList.of("s", "sec", "secs"), ChronoUnit.SECONDS), + SECONDS(ImmutableList.of("s", "sec", "secs", "second", "seconds"), ChronoUnit.SECONDS), MINUTES(ImmutableList.of("m", "min", "mins", "minute", "minutes"), ChronoUnit.MINUTES), HOURS(ImmutableList.of("h", "hour", "hours"), ChronoUnit.HOURS), DAYS(ImmutableList.of("d", "day", "days"), ChronoUnit.DAYS); diff --git a/server/container/util/src/test/java/org/apache/james/util/DurationParserTest.java b/server/container/util/src/test/java/org/apache/james/util/DurationParserTest.java index 7ef870c..e1c962d 100644 --- a/server/container/util/src/test/java/org/apache/james/util/DurationParserTest.java +++ b/server/container/util/src/test/java/org/apache/james/util/DurationParserTest.java @@ -25,155 +25,113 @@ import java.time.Duration; import java.time.temporal.ChronoUnit; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; class DurationParserTest { - - @Test - void getMilliSecondsShouldConvertValueWhenNoUnitAmountAsString() { - Duration actual = DurationParser.parse("2"); - assertThat(actual).isEqualTo(Duration.ofMillis(2)); - } - - @Test - void getMilliSecondsShouldUseProvidedUnitWhenNoUnitAmountAsString() { - Duration actual = DurationParser.parse("2", ChronoUnit.SECONDS); - assertThat(actual).isEqualTo(Duration.ofSeconds(2)); - } - - @Test - void getMilliSecondsShouldNotUseProvidedUnitWhenNoUnitAmountAsString() { - Duration actual = DurationParser.parse("2 minutes", ChronoUnit.SECONDS); - assertThat(actual).isEqualTo(Duration.ofMinutes(2)); - } - - @Test - void getMilliSecondsShouldConvertValueWhenMsecAmountAsString() { - Duration actual = DurationParser.parse("2 msec"); - assertThat(actual).isEqualTo(Duration.ofMillis(2)); - } - - @Test - void getMilliSecondsShouldConvertValueWhenMsAmountAsString() { - Duration actual = DurationParser.parse("2 ms"); - assertThat(actual).isEqualTo(Duration.ofMillis(2)); - } - - @Test - void getMilliSecondsShouldConvertValueWhenMsCapitalAmountAsString() { - Duration actual = DurationParser.parse("2 Ms"); - assertThat(actual).isEqualTo(Duration.ofMillis(2)); - } - @Test - void getMilliSecondsShouldConvertValueWhenMsecsAmountAsString() { - Duration actual = DurationParser.parse("2 msecs"); - assertThat(actual).isEqualTo(Duration.ofMillis(2)); + void parseShouldUseMsAsDefaultUnit() { + assertThat(DurationParser.parse("2")) + .isEqualTo(Duration.ofMillis(2)); } @Test - void getMilliSecondsShouldConvertValueWhenSAmountAsString() { - Duration actual = DurationParser.parse("2 s"); - assertThat(actual).isEqualTo(Duration.ofSeconds(2)); + void parseShouldUseSpecifiedDefaultUnit() { + assertThat(DurationParser.parse("2", ChronoUnit.SECONDS)) + .isEqualTo(Duration.ofSeconds(2)); } @Test - void getMilliSecondsShouldConvertValueWhenSecAmountAsString() { - Duration actual = DurationParser.parse("2 sec"); - assertThat(actual).isEqualTo(Duration.ofSeconds(2)); + void parseShouldUseSpecifiedUnit() { + assertThat(DurationParser.parse("2 minutes", ChronoUnit.SECONDS)) + .isEqualTo(Duration.ofMinutes(2)); } @Test - void getMilliSecondsShouldConvertValueWhenSecCapitalAmountAsString() { - Duration actual = DurationParser.parse("2 Sec"); - assertThat(actual).isEqualTo(Duration.ofSeconds(2)); + void parseShouldSupportStartingSpaces() { + assertThat(DurationParser.parse(" 2 minutes")) + .isEqualTo(Duration.ofMinutes(2)); } @Test - void getMilliSecondsShouldConvertValueWhenSecsAmountAsString() { - Duration actual = DurationParser.parse("2 secs"); - assertThat(actual).isEqualTo(Duration.ofSeconds(2)); + void parseShouldSupportEndingSpaces() { + assertThat(DurationParser.parse("2 minutes ")) + .isEqualTo(Duration.ofMinutes(2)); } - @Test - void getMilliSecondsShouldConvertValueWhenMAmountAsString() { - Duration actual = DurationParser.parse("2 m"); - assertThat(actual).isEqualTo(Duration.ofMinutes(2)); - } - - @Test - void getMilliSecondsShouldConvertValueWhenMinuteAmountAsString() { - Duration actual = DurationParser.parse("2 minute"); - assertThat(actual).isEqualTo(Duration.ofMinutes(2)); + @ParameterizedTest + @ValueSource(strings = {"2", "2 ms", "2 msec", "2 msecs", "2 Ms"}) + void parseShouldHandleMilliseconds(String input) { + assertThat(DurationParser.parse(input)) + .isEqualTo(Duration.ofMillis(2)); } - @Test - void getMilliSecondsShouldConvertValueWhenMinuteCapitalAmountAsString() { - Duration actual = DurationParser.parse("2 Minute"); - assertThat(actual).isEqualTo(Duration.ofMinutes(2)); - } - - @Test - void getMilliSecondsShouldConvertValueWhenMinutesAmountAsString() { - Duration actual = DurationParser.parse("2 minutes"); - assertThat(actual).isEqualTo(Duration.ofMinutes(2)); + @ParameterizedTest + @ValueSource(strings = {"2 s", "2 sec", "2 Sec", "2 second", "2 seconds"}) + void parseShouldHandleSeconds(String input) { + assertThat(DurationParser.parse(input)) + .isEqualTo(Duration.ofSeconds(2)); } - @Test - void getMilliSecondsShouldConvertValueWhenHAmountAsString() { - Duration actual = DurationParser.parse("2 h"); - assertThat(actual).isEqualTo(Duration.ofHours(2)); + @ParameterizedTest + @ValueSource(strings = {"2 m", "2 min", "2 mins", "2 minute", "2 Minute", "2 minutes"}) + void parseShouldHandleMinutes(String input) { + assertThat(DurationParser.parse(input)) + .isEqualTo(Duration.ofMinutes(2)); } - @Test - void getMilliSecondsShouldConvertValueWhenHourAmountAsString() { - Duration actual = DurationParser.parse("2 hour"); - assertThat(actual).isEqualTo(Duration.ofHours(2)); + @ParameterizedTest + @ValueSource(strings = {"2 h", "2 hour", "2 Hour", "2 hours"}) + void parseShouldHandleHours(String input) { + assertThat(DurationParser.parse(input)) + .isEqualTo(Duration.ofHours(2)); } - @Test - void getMilliSecondsShouldConvertValueWhenHourCapitalAmountAsString() { - Duration actual = DurationParser.parse("2 Hour"); - assertThat(actual).isEqualTo(Duration.ofHours(2)); + @ParameterizedTest + @ValueSource(strings = {"2 d", "2 day", "2 Day", "2 days"}) + void parseShouldHandleDays(String input) { + assertThat(DurationParser.parse(input)) + .isEqualTo(Duration.ofDays(2)); } @Test - void getMilliSecondsShouldConvertValueWhenHoursAmountAsString() { - Duration actual = DurationParser.parse("2 hours"); - assertThat(actual).isEqualTo(Duration.ofHours(2)); + void parseShouldThrowWhenIllegalUnitInRawString() { + assertThatThrownBy(() -> DurationParser.parse("2 unknown")) + .isInstanceOf(NumberFormatException.class); } @Test - void getMilliSecondsShouldConvertValueWhenDAmountAsString() { - Duration actual = DurationParser.parse("2 d"); - assertThat(actual).isEqualTo(Duration.ofDays(2)); + void parseShouldThrowWhenMissingAmount() { + assertThatThrownBy(() -> DurationParser.parse("seconds")) + .isInstanceOf(NumberFormatException.class); } @Test - void getMilliSecondsShouldConvertValueWhenDayAmountAsString() { - Duration actual = DurationParser.parse("2 day"); - assertThat(actual).isEqualTo(Duration.ofDays(2)); + void parseShouldThrowWhenMissingAmountWithExtraWhiteSpace() { + assertThatThrownBy(() -> DurationParser.parse(" seconds")) + .isInstanceOf(NumberFormatException.class); } @Test - void getMilliSecondsShouldConvertValueWhenDayCapitalAmountAsString() { - Duration actual = DurationParser.parse("2 Day"); - assertThat(actual).isEqualTo(Duration.ofDays(2)); + void parseShouldThrowWhenEmpty() { + assertThatThrownBy(() -> DurationParser.parse("")) + .isInstanceOf(NumberFormatException.class); } @Test - void getMilliSecondsShouldConvertValueWhenDaysAmountAsString() { - Duration actual = DurationParser.parse("2 days"); - assertThat(actual).isEqualTo(Duration.ofDays(2)); + void parseShouldThrowWhenNegativeAmount() { + assertThatThrownBy(() -> DurationParser.parse("-1 s")) + .isInstanceOf(NumberFormatException.class); } @Test - void getMilliSecondsShouldThrowWhenIllegalUnitInRawString() { - assertThatThrownBy(() -> DurationParser.parse("2 week")) - .isInstanceOf(NumberFormatException.class); + void parseShouldThrowWhenZero() { + assertThat(DurationParser.parse("0 s")) + .isEqualTo(Duration.ofSeconds(0)); } @Test - void getMilliSecondsShouldThrowWhenIllegalPattern() { + void parseShouldThrowWhenIllegalPattern() { assertThatThrownBy(() -> DurationParser.parse("illegal pattern")) .isInstanceOf(NumberFormatException.class); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
