package net.time4j.range;
import net.time4j.PlainDate;
import net.time4j.PlainTimestamp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static net.time4j.CalendarUnit.DAYS;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(JUnit4.class)
public class ComparatorTest {
@Test
public void compareTimestampIntervals() {
PlainTimestamp start = PlainTimestamp.of(2014, 2, 27, 0, 0);
PlainTimestamp end = PlainTimestamp.of(2014, 5, 14, 0, 0);
TimestampInterval a = TimestampInterval.between(start, end);
TimestampInterval b =
TimestampInterval.between(start, end.plus(1, DAYS));
List<TimestampInterval> intervals = new ArrayList<TimestampInterval>();
intervals.add(b);
intervals.add(a);
assertThat(
intervals.get(0).equals(b),
is(true));
assertThat(
intervals.get(1).equals(a),
is(true));
Collections.sort(intervals, TimestampInterval.comparator());
assertThat(
intervals.get(0).equals(a),
is(true));
assertThat(
intervals.get(1).equals(b),
is(true));
}
@Test
public void compareDateIntervalsWithEarlierStart() {
PlainDate start = PlainDate.of(2014, 2, 27);
PlainDate end = PlainDate.of(2014, 5, 14);
DateInterval a = DateInterval.between(start.minus(1, DAYS), end);
DateInterval b = DateInterval.between(start, end.minus(1, DAYS));
List<DateInterval> intervals = new ArrayList<DateInterval>();
intervals.add(b);
intervals.add(a);
assertThat(
intervals.get(0).equals(b),
is(true));
assertThat(
intervals.get(1).equals(a),
is(true));
Collections.sort(intervals, DateInterval.comparator());
assertThat(
intervals.get(0).equals(a),
is(true));
assertThat(
intervals.get(1).equals(b),
is(true));
}
@Test
public void compareDateIntervalsWithLaterStart() {
PlainDate start = PlainDate.of(2014, 2, 27);
PlainDate end = PlainDate.of(2014, 5, 14);
DateInterval a = DateInterval.between(start.plus(1, DAYS), end);
DateInterval b = DateInterval.between(start, end.plus(1, DAYS));
List<DateInterval> intervals = new ArrayList<DateInterval>();
intervals.add(a);
intervals.add(b);
assertThat(
intervals.get(0).equals(a),
is(true));
assertThat(
intervals.get(1).equals(b),
is(true));
Collections.sort(intervals, DateInterval.comparator());
assertThat(
intervals.get(0).equals(b),
is(true));
assertThat(
intervals.get(1).equals(a),
is(true));
}
@Test
public void compareDateIntervalsWithSameStartLaterEnd() {
PlainDate start = PlainDate.of(2014, 2, 27);
PlainDate end = PlainDate.of(2014, 5, 14);
DateInterval a = DateInterval.between(start, end);
DateInterval b = DateInterval.between(start, end.plus(1, DAYS));
List<DateInterval> intervals = new ArrayList<DateInterval>();
intervals.add(b);
intervals.add(a);
assertThat(
intervals.get(0).equals(b),
is(true));
assertThat(
intervals.get(1).equals(a),
is(true));
Collections.sort(intervals, DateInterval.comparator());
assertThat(
intervals.get(0).equals(a),
is(true));
assertThat(
intervals.get(1).equals(b),
is(true));
}
@Test
public void compareDateIntervalsWithSameStartEarlierEnd() {
PlainDate start = PlainDate.of(2014, 2, 27);
PlainDate end = PlainDate.of(2014, 5, 14);
DateInterval a = DateInterval.between(start, end);
DateInterval b = DateInterval.between(start, end.minus(1, DAYS));
List<DateInterval> intervals = new ArrayList<DateInterval>();
intervals.add(a);
intervals.add(b);
assertThat(
intervals.get(0).equals(a),
is(true));
assertThat(
intervals.get(1).equals(b),
is(true));
Collections.sort(intervals, DateInterval.comparator());
assertThat(
intervals.get(0).equals(b),
is(true));
assertThat(
intervals.get(1).equals(a),
is(true));
}
@Test
public void compareDateIntervalsWithMaxEnd() {
PlainDate start = PlainDate.of(2014, 2, 27);
PlainDate end = PlainDate.axis().getMaximum();
DateInterval a = DateInterval.between(start, end);
DateInterval b = DateInterval.between(start, end).withOpenEnd();
List<DateInterval> intervals = new ArrayList<DateInterval>();
intervals.add(a);
intervals.add(b);
assertThat(
intervals.get(0).equals(a),
is(true));
assertThat(
intervals.get(1).equals(b),
is(true));
Collections.sort(intervals, DateInterval.comparator());
assertThat(
intervals.get(0).equals(b),
is(true));
assertThat(
intervals.get(1).equals(a),
is(true));
}
@Test
public void compareTimestampIntervalsWithMaxEnd() {
PlainTimestamp start = PlainTimestamp.of(2014, 2, 27, 0, 0);
PlainTimestamp end = PlainTimestamp.axis().getMaximum();
TimestampInterval a =
TimestampInterval.between(start, end);
TimestampInterval b =
TimestampInterval.between(start, end).withClosedEnd();
List<TimestampInterval> intervals = new ArrayList<TimestampInterval>();
intervals.add(b);
intervals.add(a);
assertThat(
intervals.get(0).equals(b),
is(true));
assertThat(
intervals.get(1).equals(a),
is(true));
Collections.sort(intervals, TimestampInterval.comparator());
assertThat(
intervals.get(0).equals(a),
is(true));
assertThat(
intervals.get(1).equals(b),
is(true));
}
}