Handeln tut es sich um folgenden Test:
Code: Alles auswählen
assertTrue(sut.isGameFinished());
betrachten wir den letzten Wurf im Spiel, die 6 nach dem Spare:
Code: Alles auswählen
sut.addThrow(6);
Code: Alles auswählen
public void addThrow(int score) {
if (currentFrame.isGameFinished())
throw new IllegalStateException("The game has already been finished. No further throw can be added to this scorecard.");
currentFrame.addThrowScore(score);
if (currentFrame.isFinished())
currentFrame = currentFrame.getNextFrame();
}
nun kommt der gameFinishedCheck:
Code: Alles auswählen
public boolean isGameFinished() {
return currentFrame == getFrame(10) && getFrame(10).isGameFinished();
}
Ist dies ein Fehler im vorgegebenen Sourcecode ?
Wenn ich den Code von addThrow etwas umschreibe, was immernoch den gleichen Regeln entspricht, funktioniert alles:
Code: Alles auswählen
public void addThrow(int score) {
if (currentFrame.isGameFinished())
throw new IllegalStateException("The game has already been finished. No further throw can be added to this scorecard.");
currentFrame.addThrowScore(score);
if (currentFrame.isFinished() && !this.isGameFinished())
currentFrame = currentFrame.getNextFrame();
}
