You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
3.7 KiB

import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.stream.Stream;
public class PlayerTest {
private Player p;
@BeforeEach
void setup() {
p = new Player("Rot", 40, 43);
}
@Test
void testDice() {
int calculatedResult = p.rollDice();
assertThat(calculatedResult).describedAs("Dice result").isBetween(1,6);
}
@Test
void testToString() {
String expectedResult = "Rot";
String calculatedResult = p.toString();
assertThat(calculatedResult).describedAs("Player Name").isEqualTo(expectedResult);
}
@Test
void checkStartPositionOfFigures() {
int expectedResult = -1;
int calculatedResult = p.figures[0].position;
for(int i = 0; i < 4; i++) {
calculatedResult = p.figures[i].position;
if(expectedResult != calculatedResult) {
calculatedResult = 1;
break;
}
}
assertThat(calculatedResult).describedAs("Starting postion of Figures").isEqualTo(expectedResult);
}
@ParameterizedTest
@MethodSource("FieldStream")
void checkGameWin(String testname, Collection<Figure> figures, Collection<Integer> positions, boolean expectedResult) {
Iterator<Figure> it = figures.iterator();
Iterator<Integer> it2 = positions.iterator();
for(;it.hasNext();) {
it.next().setPosition(it2.next());
}
boolean calculatedResult = p.checkGameWin(figures);
assertThat(calculatedResult).describedAs("Check Win").isEqualTo(expectedResult);
}
static Stream<Arguments> FieldStream() {
return Stream.of(
Arguments.of("No Figure in House",
Arrays.asList(
new Figure(),
new Figure(),
new Figure(),
new Figure()),
Arrays.asList(-1, -1, -1, -1),
false),
Arguments.of("One Figure in House",
Arrays.asList(
new Figure(),
new Figure(),
new Figure(),
new Figure()),
Arrays.asList(40, -1, -1, -1),
false),
Arguments.of("Two Figure in House",
Arrays.asList(
new Figure(),
new Figure(),
new Figure(),
new Figure()),
Arrays.asList(40, 41, -1, -1),
false),
Arguments.of("Three Figure in House",
Arrays.asList(
new Figure(),
new Figure(),
new Figure(),
new Figure()),
Arrays.asList(40, 41, 42, -1),
false),
Arguments.of("Four Figure in House",
Arrays.asList(
new Figure(),
new Figure(),
new Figure(),
new Figure()),
Arrays.asList(40, 41, 42, 43),
true)
);
}
}