package net.time4j.range;
import net.time4j.Weekday;
import net.time4j.format.expert.ChronoFormatter;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import java.text.ParseException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Locale;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
@RunWith(JUnit4.class)
public class SpanOfWeekdaysTest {
@Test
public void betweenMondayAndFriday() {
assertThat(
SpanOfWeekdays.betweenMondayAndFriday(),
is(SpanOfWeekdays.between(Weekday.MONDAY, Weekday.FRIDAY)));
}
@Test
public void getStart() {
assertThat(
SpanOfWeekdays.betweenMondayAndFriday().getStart(),
is(Weekday.MONDAY));
}
@Test
public void getEnd() {
assertThat(
SpanOfWeekdays.betweenMondayAndFriday().getEnd(),
is(Weekday.FRIDAY));
}
@Test
public void iterator() {
int i = 0;
for (Weekday day : SpanOfWeekdays.between(Weekday.SATURDAY, Weekday.FRIDAY)) {
i++;
switch (i) {
case 1:
assertThat(day, is(Weekday.SATURDAY));
break;
case 2:
assertThat(day, is(Weekday.SUNDAY));
break;
case 3:
assertThat(day, is(Weekday.MONDAY));
break;
case 4:
assertThat(day, is(Weekday.TUESDAY));
break;
case 5:
assertThat(day, is(Weekday.WEDNESDAY));
break;
case 6:
assertThat(day, is(Weekday.THURSDAY));
break;
case 7:
assertThat(day, is(Weekday.FRIDAY));
break;
default:
fail("Unexpected length of iterator.");
}
}
}
@Test
public void length() {
assertThat(SpanOfWeekdays.betweenMondayAndFriday().length(), is(5));
assertThat(SpanOfWeekdays.on(Weekday.SATURDAY).length(), is(1));
assertThat(SpanOfWeekdays.between(Weekday.SATURDAY, Weekday.FRIDAY).length(), is(7));
}
@Test
public void chronology() {
assertThat(
SpanOfWeekdays.chronology().getRegisteredElements(),
is(new HashSet<>(Arrays.asList(SpanOfWeekdays.START, SpanOfWeekdays.END))));
}
@Test
public void formatter() throws ParseException {
ChronoFormatter<SpanOfWeekdays> f =
SpanOfWeekdays.formatter("SSSS[ 'to' EEEE]", Locale.ENGLISH);
SpanOfWeekdays span = SpanOfWeekdays.betweenMondayAndFriday();
SpanOfWeekdays single = SpanOfWeekdays.on(Weekday.SUNDAY);
assertThat(
f.format(span),
is("Monday to Friday"));
assertThat(
f.parse("Monday to Friday"),
is(span));
assertThat(
f.format(single),
is("Sunday to Sunday"));
assertThat(
f.parse("Sunday"),
is(single));
}
}