You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/03/28 03:21:55 UTC
[james-project] 11/23: JAMES-2702 Improve DurationParser tests
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 <bt...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org