135 lines
4.3 KiB
Java
135 lines
4.3 KiB
Java
package test.uebung.uebung04.tournament;
|
|
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
|
|
import java.util.Collection;
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertThrows;
|
|
|
|
public class TournamentTest {
|
|
|
|
private static final String BORGHOFF = "Prof. Borghoff";
|
|
private static final String HOMMEL = "Prof. Hommel";
|
|
private static final String KOCH = "Prof. Koch";
|
|
private static final String MINAS = "Prof. Minas";
|
|
private static final String BUCHENRIEDER = "Prof. Buchenrieder";
|
|
private static final String DREO = "Prof. Dreo";
|
|
private static final String ROSE = "Prof. Rose";
|
|
private static final String SIEGLE = "Prof. Siegle";
|
|
private static final String TEEGE = "Prof. Teege";
|
|
private static final Set<String> SET1 = Set.of(BORGHOFF, HOMMEL, KOCH, MINAS, BUCHENRIEDER, DREO, ROSE, SIEGLE, TEEGE);
|
|
private static final Set<String> SET2 = Set.of(BORGHOFF, MINAS, SIEGLE, HOMMEL, DREO);
|
|
private static final Set<String> SET3 = Set.of(BORGHOFF, MINAS, SIEGLE);
|
|
private static final Set<String> SET4 = Set.of(MINAS, SIEGLE);
|
|
private static final Set<String> SET5 = Set.of(MINAS);
|
|
|
|
private Tournament tournament;
|
|
private Game r1s1;
|
|
private Game r1s2;
|
|
private Game r1s3;
|
|
private Game r1s4;
|
|
private Game r2s1;
|
|
private Game r2s2;
|
|
private Game r3s1;
|
|
private Game r4s1;
|
|
|
|
@Before
|
|
public void setup() {
|
|
r1s1 = new SeededGame(HOMMEL, KOCH);
|
|
r1s2 = new SeededGame(MINAS, BUCHENRIEDER);
|
|
r1s3 = new SeededGame(DREO, ROSE);
|
|
r1s4 = new SeededGame(SIEGLE, TEEGE);
|
|
r2s1 = new ByeGame(BORGHOFF, r1s1);
|
|
r2s2 = new OrdinaryGame(r1s2, r1s3);
|
|
r3s1 = new OrdinaryGame(r2s1, r2s2);
|
|
r4s1 = new OrdinaryGame(r3s1, r1s4);
|
|
tournament = new Tournament("UniBw Sportschießen", r4s1);
|
|
}
|
|
|
|
@Test
|
|
public void testBeforeFirstRound() {
|
|
assertEquals(SET1, asSet(tournament.getAllPlayers()));
|
|
assertEquals(SET1, asSet(tournament.getRemainingPlayers()));
|
|
}
|
|
|
|
@Test
|
|
public void testFirstRound() {
|
|
r1s1.setWinner(HOMMEL);
|
|
r1s2.setWinner(MINAS);
|
|
r1s3.setWinner(DREO);
|
|
r1s4.setWinner(SIEGLE);
|
|
assertEquals(SET1, asSet(tournament.getAllPlayers()));
|
|
assertEquals(SET2, asSet(tournament.getRemainingPlayers()));
|
|
}
|
|
|
|
@Test
|
|
public void testSecondRound() {
|
|
r1s1.setWinner(HOMMEL);
|
|
r1s2.setWinner(MINAS);
|
|
r1s3.setWinner(DREO);
|
|
r1s4.setWinner(SIEGLE);
|
|
r2s1.setWinner(BORGHOFF);
|
|
r2s2.setWinner(MINAS);
|
|
assertEquals(SET1, asSet(tournament.getAllPlayers()));
|
|
assertEquals(SET3, asSet(tournament.getRemainingPlayers()));
|
|
}
|
|
|
|
@Test
|
|
public void testThirdRound() {
|
|
r1s1.setWinner(HOMMEL);
|
|
r1s2.setWinner(MINAS);
|
|
r1s3.setWinner(DREO);
|
|
r1s4.setWinner(SIEGLE);
|
|
r2s1.setWinner(BORGHOFF);
|
|
r2s2.setWinner(MINAS);
|
|
r3s1.setWinner(MINAS);
|
|
assertEquals(SET1, asSet(tournament.getAllPlayers()));
|
|
assertEquals(SET4, asSet(tournament.getRemainingPlayers()));
|
|
}
|
|
|
|
@Test
|
|
public void testCompleteTournament() {
|
|
r1s1.setWinner(HOMMEL);
|
|
r1s2.setWinner(MINAS);
|
|
r1s3.setWinner(DREO);
|
|
r1s4.setWinner(SIEGLE);
|
|
r2s1.setWinner(BORGHOFF);
|
|
r2s2.setWinner(MINAS);
|
|
r3s1.setWinner(MINAS);
|
|
r4s1.setWinner(MINAS);
|
|
assertEquals(SET1, asSet(tournament.getAllPlayers()));
|
|
assertEquals(SET5, asSet(tournament.getRemainingPlayers()));
|
|
}
|
|
|
|
@Test
|
|
public void testException() {
|
|
r1s1.setWinner(HOMMEL);
|
|
r1s2.setWinner(MINAS);
|
|
r1s3.setWinner(DREO);
|
|
r1s4.setWinner(SIEGLE);
|
|
r2s1.setWinner(BORGHOFF);
|
|
r2s2.setWinner(MINAS);
|
|
r3s1.setWinner(MINAS);
|
|
assertThrows(IllegalArgumentException.class, () -> r4s1.setWinner(BUCHENRIEDER));
|
|
}
|
|
|
|
@Test(expected = IllegalStateException.class)
|
|
public void testException2() {
|
|
r4s1.setWinner(MINAS);
|
|
}
|
|
|
|
@Test
|
|
public void testException3() {
|
|
r1s1.setWinner(HOMMEL);
|
|
assertThrows(IllegalStateException.class, () -> r1s1.setWinner(HOMMEL));
|
|
}
|
|
|
|
private static <T> Set<T> asSet(Collection<T> collection) {
|
|
return new HashSet<>(collection);
|
|
}
|
|
}
|