Ah okay.
Hier ist einmal der Code der Superklasse:
[CODE lang="java" title="Superklasse"]import static org.junit.Assert.*;
import org.junit.Test;
/**
* Eine Testklasse fuer Spielfeld-Klassen.
*/
abstract class BasisSpielfeldTest {
private Spielfeld _spielfeld;
/**
* Jede Testmethode arbeitet auf einem frisch erzeugten Test-Exemplar. Im
* Konstruktor kann man also den erforderlichen Ausgangszustand fuer die
* einzelnen Testmethoden herstellen, in diesem Fall ein neues Spielfeld.
*/
public BasisSpielfeldTest() {
erzeugeSpielfeld();
}
/**
* Diese abstrakte Methode ist für die Spielfelderzeugung zustaendig.
* Allerdings wird hier kein Spielfeld erzeugt!
*/
public abstract void erzeugeSpielfeld();
/**
* Wenn alle Positionen besetzt sind, solle das Spielfeld voll sein. Vorher
* sollte es immer eine freie Position geben.
*/
@Test
public void testBefuelleSpielfeldKomplett() {
for (int zeile = 0; zeile < 3; ++zeile) {
for (int spalte = 0; spalte < 3; ++spalte) {
assertFalse(_spielfeld.istVoll());
_spielfeld.besetzePosition(zeile, spalte, 1);
}
}
assertTrue(_spielfeld.istVoll());
}
/**
* Wenn alle Positionen besetzt sind, solle das Spielfeld voll sein. Vorher
* sollte es immer eine freie Position geben. Dieser Test befuellt das Spielfeld
* von hinten nach vorne.
*/
@Test
public void testBefuelleSpielfeldKomplettRueckwaerts() {
for (int zeile = 2; zeile >= 0; --zeile) {
for (int spalte = 2; spalte >= 0; --spalte) {
assertFalse(_spielfeld.istVoll());
_spielfeld.besetzePosition(zeile, spalte, 1);
}
}
assertTrue(_spielfeld.istVoll());
}
/**
* Wenn neun Mal dieselbe Position besetzt wird, sollte das Spielfeld nicht voll
* sein.
*/
@Test
public void testBesetzeNeunMalDieselbePosition() {
for (int i = 0; i < 9; ++i) {
_spielfeld.besetzePosition(0, 0, 1);
}
assertFalse(_spielfeld.istVoll());
}
/**
* Teste, ob alle Zellen des Spielfeldes mit allen moeglichen Belegungen (0, 1
* und 2) belegt werden koennen.
*/
@Test
public void testeBelegbarkeitAllerZellen() {
for (int zeile = 0; zeile < 3; ++zeile) {
for (int spalte = 0; spalte < 3; ++spalte) {
assertEquals(0, _spielfeld.gibBesitzer(zeile, spalte));
_spielfeld.besetzePosition(zeile, spalte, 1);
assertEquals(1, _spielfeld.gibBesitzer(zeile, spalte));
_spielfeld.besetzePosition(zeile, spalte, 2);
assertEquals(2, _spielfeld.gibBesitzer(zeile, spalte));
_spielfeld.besetzePosition(zeile, spalte, 0);
assertEquals(0, _spielfeld.gibBesitzer(zeile, spalte));
}
}
}
}
[/CODE]
Und hier einmal der Subklasse:
[CODE lang="java" title="Subklasse"]import static org.junit.Assert.*;
import org.junit.Test;
/**
* Eine Testklasse fuer Spielfeld-Klassen.
*
*/
public class SpielfeldStringTest extends BasisSpielfeldTest{
private Spielfeld _spielfeld;
/**
* Hier wird ein Spielfeld erzeugt.
*/
@Override
public void erzeugeSpielfeld(){
_spielfeld = new SpielfeldString();
}
/**
* Wenn alle Positionen besetzt sind, solle das Spielfeld voll sein. Vorher
* sollte es immer eine freie Position geben.
*/
@Test
public void testBefuelleSpielfeldKomplett() {
for (int zeile = 0; zeile < 3; ++zeile) {
for (int spalte = 0; spalte < 3; ++spalte) {
assertFalse(_spielfeld.istVoll());
_spielfeld.besetzePosition(zeile, spalte, 1);
}
}
assertTrue(_spielfeld.istVoll());
}
/**
* Wenn alle Positionen besetzt sind, solle das Spielfeld voll sein. Vorher
* sollte es immer eine freie Position geben. Dieser Test befuellt das Spielfeld
* von hinten nach vorne.
*/
@Test
public void testBefuelleSpielfeldKomplettRueckwaerts() {
for (int zeile = 2; zeile >= 0; --zeile) {
for (int spalte = 2; spalte >= 0; --spalte) {
assertFalse(_spielfeld.istVoll());
_spielfeld.besetzePosition(zeile, spalte, 1);
}
}
assertTrue(_spielfeld.istVoll());
}
/**
* Wenn neun Mal dieselbe Position besetzt wird, sollte das Spielfeld nicht voll
* sein.
*/
@Test
public void testBesetzeNeunMalDieselbePosition() {
for (int i = 0; i < 9; ++i) {
_spielfeld.besetzePosition(0, 0, 1);
}
assertFalse(_spielfeld.istVoll());
}
/**
* Teste, ob alle Zellen des Spielfeldes mit allen moeglichen Belegungen (0, 1
* und 2) belegt werden koennen.
*/
@Test
public void testeBelegbarkeitAllerZellen() {
for (int zeile = 0; zeile < 3; ++zeile) {
for (int spalte = 0; spalte < 3; ++spalte) {
assertEquals(0, _spielfeld.gibBesitzer(zeile, spalte));
_spielfeld.besetzePosition(zeile, spalte, 1);
assertEquals(1, _spielfeld.gibBesitzer(zeile, spalte));
_spielfeld.besetzePosition(zeile, spalte, 2);
assertEquals(2, _spielfeld.gibBesitzer(zeile, spalte));
_spielfeld.besetzePosition(zeile, spalte, 0);
assertEquals(0, _spielfeld.gibBesitzer(zeile, spalte));
}
}
}
}
[/CODE]