Deadline { public Deadline min(final Deadline other) { return value <= other.value ? this : other; } private  Deadline(final long deadlineMillis); static Deadline calculate(final long timeMillis, final TimeValue timeValue); static Deadline calculate(final TimeValue timeValue); static Deadline fromUnixMilliseconds(final long value); static Deadline parse(final String source); @Override boolean equals(final Object obj); String format(final TimeUnit overdueTimeUnit); String formatTarget(); Deadline freeze(); long getValue(); @Override int hashCode(); boolean isBefore(final long millis); boolean isExpired(); boolean isMax(); boolean isMin(); boolean isNotExpired(); Deadline min(final Deadline other); long remaining(); TimeValue remainingTimeValue(); @Override String toString(); static final String DATE_FORMAT; static Deadline MAX_VALUE; static Deadline MIN_VALUE; }
@Test public void testMin() { Assert.assertEquals(Deadline.MIN_VALUE, Deadline.MIN_VALUE.min(Deadline.MAX_VALUE)); Assert.assertEquals(Deadline.MIN_VALUE, Deadline.MAX_VALUE.min(Deadline.MIN_VALUE)); final Deadline deadline0 = Deadline.fromUnixMilliseconds(0); Assert.assertEquals(Deadline.MIN_VALUE, deadline0.min(Deadline.MIN_VALUE)); Assert.assertEquals(deadline0, deadline0.min(Deadline.MAX_VALUE)); final Deadline deadline1 = Deadline.fromUnixMilliseconds(0); Assert.assertEquals(Deadline.MIN_VALUE, deadline1.min(Deadline.MIN_VALUE)); Assert.assertEquals(deadline0, deadline1.min(Deadline.MAX_VALUE)); }