package net.time4j; import net.time4j.base.WallTime; import net.time4j.engine.TimePoint; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(JUnit4.class) public class TimeComparisonTest { @Test public void equalsMethod() { PlainTime d1 = PlainTime.of(19, 45, 30); Object d2 = PlainTime.of(19, 45, 30, 0); Object d3 = PlainTime.of(19, 45, 30, 1); Object d4 = null; Object d5 = new WallTime() { @Override public int getHour() { return 19; } @Override public int getMinute() { return 45; } @Override public int getSecond() { return 30; } @Override public int getNanosecond() { return 0; } }; assertThat(d1.equals(d2), is(true)); assertThat(d1.equals(d3), is(false)); assertThat(d1.equals(d4), is(false)); assertThat(d1.equals(d5), is(false)); } @Test public void hashCodeMethod() { PlainTime d1 = PlainTime.of(19, 45, 30); Object d2 = PlainTime.of(19, 45, 30, 0); Object d3 = PlainTime.of(19, 45, 30, 1); Object d4 = new WallTime() { @Override public int getHour() { return 19; } @Override public int getMinute() { return 45; } @Override public int getSecond() { return 30; } @Override public int getNanosecond() { return 0; } }; assertThat(d1.hashCode() == d2.hashCode(), is(true)); assertThat(d1.hashCode() == d3.hashCode(), is(false)); assertThat(d1.hashCode() == d4.hashCode(), is(false)); } @Test public void isBefore() { assertThat( PlainTime.of(19, 45, 30, 1).isBefore(PlainTime.of(19, 45, 30, 2)), is(true)); assertThat( PlainTime.of(19, 45, 30).isBefore(PlainTime.of(20)), is(true)); assertThat( PlainTime.of(19, 45, 30).isBefore(PlainTime.of(19, 45, 30)), is(false)); assertThat( PlainTime.of(20).isBefore(PlainTime.of(19, 45, 30)), is(false)); assertThat( PlainTime.of(23, 59, 59, 999999999).isBefore(PlainTime.of(24)), is(true)); } @Test public void isSimultaneous() { assertThat( PlainTime.of(19, 45, 30).isSimultaneous(PlainTime.of(19, 45, 30)), is(true)); assertThat( PlainTime.of(0).isSimultaneous(PlainTime.of(24)), is(false)); } @Test public void isAfter() { assertThat( PlainTime.of(19, 45, 30, 1).isAfter(PlainTime.of(19, 45, 30, 2)), is(false)); assertThat( PlainTime.of(19, 45, 30).isAfter(PlainTime.of(20)), is(false)); assertThat( PlainTime.of(19, 45, 30).isAfter(PlainTime.of(19, 45, 30)), is(false)); assertThat( PlainTime.of(20).isAfter(PlainTime.of(19, 45, 30)), is(true)); assertThat( PlainTime.of(23, 59, 59, 999999999).isAfter(PlainTime.of(24)), is(false)); } @Test public void compareTo() { assertThat( PlainTime.of(23, 59, 59, 999999999) .compareTo(PlainTime.of(23, 59, 59, 999999998)) > 0, is(true)); assertThat( PlainTime.of(23, 59, 59, 999999998) .compareTo(PlainTime.of(23, 59, 59, 999999999)) > 0, is(false)); } @Test public void min() { PlainTime t1 = PlainTime.of(22, 4, 21); PlainTime t2 = PlainTime.of(22, 5, 20); assertThat( TimePoint.min(t1, t2), is(t1)); } @Test public void max() { PlainTime t1 = PlainTime.of(22, 4, 21); PlainTime t2 = PlainTime.of(23, 5, 20); assertThat( TimePoint.max(t1, t2), is(t2)); } }