|
|
@@ -96,5 +96,33 @@ class DurationTest {
|
|
|
void testHalfHourDisplayIsNotUsedForCloserToWhole(int value) {
|
|
|
assertNotEquals("0.5 hr", new Duration(HOURS, 0, value).toString());
|
|
|
}
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void testStringConstructorProducesCorrectData() {
|
|
|
+ assertEquals(new Duration(HOURS, 3600, 7200), new Duration("1 - 2 hr"));
|
|
|
+ assertEquals(new Duration(MINUTES, 600, 3600), new Duration("10 - 60 min"));
|
|
|
+ assertEquals(new Duration(SECONDS, 5, 10), new Duration("5 - 10 s"));
|
|
|
+
|
|
|
+ assertEquals(new Duration(HOURS, 0, 3600), new Duration("1 hr"));
|
|
|
+ assertEquals(new Duration(MINUTES, 0, 3600), new Duration("60 min"));
|
|
|
+ assertEquals(new Duration(SECONDS, 0, 10), new Duration("10 s"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void testStringConstructorThrowsOnUnknownDuration() {
|
|
|
+ assertThrows(IllegalArgumentException.class,
|
|
|
+ () -> new Duration("0.5 tocks"));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void testStringConstructorProcessesFloats() {
|
|
|
+ assertEquals("0.5 hr", new Duration("0.5 hr").toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ void testStringConstructorCanBeLossy() {
|
|
|
+ assertEquals("0.5 hr", new Duration("0.25 hr").toString());
|
|
|
+ assertEquals("0 hr", new Duration("0.2 hr").toString());
|
|
|
+ }
|
|
|
|
|
|
}
|