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.
175 lines
6.9 KiB
175 lines
6.9 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.ArrayList;
|
|
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;
|
|
Iterator<Figure> it = p.figures.iterator();
|
|
int calculatedResult = it.next().position;
|
|
while(it.hasNext()) {
|
|
calculatedResult = it.next().position;
|
|
if(expectedResult != calculatedResult) {
|
|
calculatedResult = 1;
|
|
break;
|
|
}
|
|
}
|
|
assertThat(calculatedResult).describedAs("Starting postion of Figures").isEqualTo(expectedResult);
|
|
}
|
|
|
|
@ParameterizedTest
|
|
@MethodSource("GameWinTestData")
|
|
void checkGameWin(String testname, ArrayList<Figure> figures, Collection<Integer> positions, boolean expectedResult) {
|
|
Iterator<Figure> it = figures.iterator();
|
|
Iterator<Integer> it2 = positions.iterator();
|
|
while(it.hasNext()) {
|
|
it.next().setPosition(it2.next());
|
|
}
|
|
boolean calculatedResult = p.checkGameWin(figures);
|
|
assertThat(calculatedResult).describedAs(testname).isEqualTo(expectedResult);
|
|
}
|
|
|
|
@ParameterizedTest
|
|
@MethodSource("BaseTestData")
|
|
void checkFigureInBase(String testname, ArrayList<Figure> figures, Collection<Integer> positions, boolean expectedResult) {
|
|
Iterator<Figure> it = figures.iterator();
|
|
Iterator<Integer> it2 = positions.iterator();
|
|
while(it.hasNext()) {
|
|
it.next().setPosition(it2.next());
|
|
}
|
|
boolean calculatedResult = p.checkFigureInBase(figures);
|
|
assertThat(calculatedResult).describedAs(testname).isEqualTo(expectedResult);
|
|
}
|
|
|
|
static Stream<Arguments> GameWinTestData() {
|
|
return Stream.of(
|
|
Arguments.of("No Figures in House",
|
|
new ArrayList<>(
|
|
Arrays.asList(
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure())
|
|
), Arrays.asList(-1, -1, -1, -1),
|
|
false),
|
|
Arguments.of("One Figure in House",
|
|
new ArrayList<>(
|
|
Arrays.asList(
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure())
|
|
), Arrays.asList(40, -1, -1, -1),
|
|
false),
|
|
Arguments.of("Two Figures in House",
|
|
new ArrayList<>(
|
|
Arrays.asList(
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure())
|
|
), Arrays.asList(40, 41, -1, -1),
|
|
false),
|
|
Arguments.of("Three Figures in House",
|
|
new ArrayList<>(
|
|
Arrays.asList(
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure())
|
|
), Arrays.asList(40, 41, 42, -1),
|
|
false),
|
|
Arguments.of("Four Figures in House",
|
|
new ArrayList<>(
|
|
Arrays.asList(
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure())
|
|
), Arrays.asList(40, 41, 42, 43),
|
|
true)
|
|
);
|
|
}
|
|
|
|
static Stream<Arguments> BaseTestData() {
|
|
return Stream.of(
|
|
Arguments.of("Four Figures in Base",
|
|
new ArrayList<>(
|
|
Arrays.asList(
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure())
|
|
), Arrays.asList(-1, -1, -1, -1),
|
|
true),
|
|
Arguments.of("Three Figures in Base",
|
|
new ArrayList<>(
|
|
Arrays.asList(
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure())
|
|
), Arrays.asList(40, -1, -1, -1),
|
|
true),
|
|
Arguments.of("Two Figures in Base",
|
|
new ArrayList<>(
|
|
Arrays.asList(
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure())
|
|
), Arrays.asList(40, 41, -1, -1),
|
|
true),
|
|
Arguments.of("One Figure in Base",
|
|
new ArrayList<>(
|
|
Arrays.asList(
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure())
|
|
), Arrays.asList(40, 41, 42, -1),
|
|
true),
|
|
Arguments.of("No Figures in Base",
|
|
new ArrayList<>(
|
|
Arrays.asList(
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure(),
|
|
new Figure())
|
|
), Arrays.asList(40, 41, 42, 43),
|
|
false)
|
|
);
|
|
}
|
|
}
|