@Test public void testEquals() { assertNotEquals(Duration.parse("PT1S"),(Duration.parse("PT2S"))); assertNotEquals(Duration.parse("PT1M"),(Duration.parse("PT2M"))); assertNotEquals(Duration.parse("PT1H"),(Duration.parse("PT2H"))); assertNotEquals(Duration.parse("P1D"),(Duration.parse("P2D"))); assertEquals( Duration.parse("PT1S"),(Duration.parse("PT1S"))); assertEquals( Duration.parse("PT1M"),(Duration.parse("PT1M"))); assertEquals( Duration.parse("PT1H"),(Duration.parse("PT1H"))); assertEquals( Duration.parse("P1D"),(Duration.parse("P1D"))); assertEquals( Duration.parse("PT1M"),(Duration.parse("PT60S"))); assertEquals( Duration.parse("PT1H"),(Duration.parse("PT60M"))); assertEquals( Duration.parse("PT1H"),(Duration.parse("PT3600S"))); assertEquals( Duration.parse("P1D"),(Duration.parse("PT24H"))); assertEquals(Duration.parse("P1D"), (Duration.parse("PT1440M"))); }
@Test public void testCompareTo() { assertEquals(-1, Duration.parse("PT1S").compareTo(Duration.parse("PT2S"))); assertEquals(-1, Duration.parse("PT1M").compareTo(Duration.parse("PT2M"))); assertEquals(-1, Duration.parse("PT1H").compareTo(Duration.parse("PT2H"))); assertEquals(-1, Duration.parse("P1D").compareTo(Duration.parse("P2D"))); assertEquals(0, Duration.parse("PT1S").compareTo(Duration.parse("PT1S"))); assertEquals(0, Duration.parse("PT1M").compareTo(Duration.parse("PT1M"))); assertEquals(0, Duration.parse("PT1H").compareTo(Duration.parse("PT1H"))); assertEquals(0, Duration.parse("P1D").compareTo(Duration.parse("P1D"))); assertEquals(1, Duration.parse("PT2S").compareTo(Duration.parse("PT1S"))); assertEquals(1, Duration.parse("PT2M").compareTo(Duration.parse("PT1M"))); assertEquals(1, Duration.parse("PT2H").compareTo(Duration.parse("PT1H"))); assertEquals(1, Duration.parse("P2D").compareTo(Duration.parse("P1D"))); assertEquals(0, Duration.parse("PT1M").compareTo(Duration.parse("PT60S"))); assertEquals(0, Duration.parse("PT1H").compareTo(Duration.parse("PT60M"))); assertEquals(0, Duration.parse("PT1H").compareTo(Duration.parse("PT3600S"))); assertEquals(0, Duration.parse("P1D").compareTo(Duration.parse("PT24H"))); assertEquals(0, Duration.parse("P1D").compareTo(Duration.parse("PT1440M"))); }
final String secondMatch = matcher.group(5); if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) { final long daysAsSecs = parseNumber(text, dayMatch, SECONDS_PER_DAY, "days"); final long hoursAsSecs = parseNumber(text, hourMatch, SECONDS_PER_HOUR, "hours"); final long minsAsSecs = parseNumber(text, minuteMatch, SECONDS_PER_MINUTE, "minutes"); final long seconds = parseNumber(text, secondMatch, 1, "seconds"); try { return create(daysAsSecs, hoursAsSecs, minsAsSecs, seconds); } catch (final ArithmeticException ex) { throw new IllegalArgumentException("Text cannot be parsed to a Duration (overflow) " + text, ex);
/** * Obtains an instance of {@code Duration} using seconds. * * @param seconds the length of the duration in seconds, positive only */ private static Duration create(final long seconds) { if ((seconds) == 0) { return ZERO; } return new Duration(seconds); }
private static Duration create(final long daysAsSecs, final long hoursAsSecs, final long minsAsSecs, final long secs) { return create(daysAsSecs + hoursAsSecs + minsAsSecs + secs); }
@Override public boolean accept(final Path basePath, final Path relativePath, final BasicFileAttributes attrs) { final FileTime fileTime = attrs.lastModifiedTime(); final long millis = fileTime.toMillis(); final long ageMillis = CLOCK.currentTimeMillis() - millis; final boolean result = ageMillis >= age.toMillis(); final String match = result ? ">=" : "<"; final String accept = result ? "ACCEPTED" : "REJECTED"; LOGGER.trace("IfLastModified {}: {} ageMillis '{}' {} '{}'", accept, relativePath, ageMillis, match, age); if (result) { return IfAll.accept(nestedConditions, basePath, relativePath, attrs); } return result; }
@Test(expected = IllegalArgumentException.class) public void testParseFailsIfSectionsOutOfOrder() { Duration.parse("P4DT2M1S3H"); }
@Test public void testToMillis() { assertEquals(0, Duration.ZERO.toMillis()); assertEquals(1000, Duration.parse("PT1S").toMillis()); assertEquals(1000 * 2 * 60, Duration.parse("PT2M").toMillis()); assertEquals(1000 * 3 * 60 * 60, Duration.parse("PT3H").toMillis()); assertEquals(1000 * 4 * 24 * 60 * 60, Duration.parse("P4D").toMillis()); final long expected = (1000 * 4 * 24 * 60 * 60) + (1000 * 3 * 60 * 60) + (1000 * 2 * 60) + 1000; assertEquals(expected, Duration.parse("P4DT3H2M1S").toMillis()); }
@Test(expected = IllegalArgumentException.class) public void testParseFailsIfInvalidPattern() { Duration.parse("abc"); }
@Test public void testToString() { assertEquals("PT0S", Duration.ZERO.toString()); assertEquals("PT1S", Duration.parse("PT1S").toString()); assertEquals("PT2M1S", Duration.parse("PT2M1S").toString()); assertEquals("PT3H2M1S", Duration.parse("PT3H2M1S").toString()); assertEquals("P4DT3H2M1S", Duration.parse("P4DT3H2M1S").toString()); }
@Test(expected = NullPointerException.class) public void testParseFailsIfNullText() { Duration.parse(null); }
@Test(expected = IllegalArgumentException.class) public void testParseFailsIfTButMissingTime() { Duration.parse("P1dT"); }
{ "\n", null, null, Provider.class }, { "P7DT10H", Duration.parse("P7DT10H"), null, Duration.class },