package domain;
import de.ahus1.lottery.domain.Draw;
import de.ahus1.lottery.domain.DrawingService;
import org.assertj.core.api.Assertions;
import org.junit.Assert;
import org.junit.Test;
import java.time.LocalDate;
import static org.junit.Assert.fail;
public class DrawingServiceTest {
@Test
public void shouldDrawSixNumbers() {
LocalDate date = LocalDate.parse("2012-01-01");
Draw draw = DrawingService.drawNumbers(date);
Assertions.assertThat(draw.getNumbers()).containsExactly(16, 33, 21, 23, 9, 13);
}
@Test
public void shouldGiveDifferentNumbersOnDifferentDates() {
LocalDate date = LocalDate.parse("2012-01-03");
Draw draw = DrawingService.drawNumbers(date);
Assertions.assertThat(draw.getNumbers()).containsExactly(34, 37, 27, 45, 15, 31);
}
@Test
public void shouldDrawOneAsMinimum() {
LocalDate date = LocalDate.parse("2012-01-01");
LocalDate maxDate = LocalDate.parse("2013-01-01");
while(true) {
Draw draw = DrawingService.drawNumbers(date);
if(draw.getNumbers().contains(1)) {
break;
}
date = date.plusDays(1);
if(date.isAfter(maxDate)) {
fail("didn't find 1 in the draw");
}
}
}
@Test
public void shouldDrawFourtyNineAsMaximum() {
LocalDate date = LocalDate.parse("2012-01-01");
LocalDate maxDate = LocalDate.parse("2013-01-01");
while(true) {
Draw draw = DrawingService.drawNumbers(date);
if(draw.getNumbers().contains(49)) {
break;
}
date = date.plusDays(1);
if(date.isAfter(maxDate)) {
fail("didn't find 49 in the draw");
}
}
}
}