Tests Übung 10 Aufgabe 2

enomis
Mausschubser
Mausschubser
Beiträge: 69
Registriert: 7. Mär 2008 18:30

Tests Übung 10 Aufgabe 2

Beitrag von enomis »

In den gegebenen Tests ist u.a folgender zu finden:

Code: Alles auswählen

@Test(expected = IllegalArgumentException.class)
	public void testAddThrow_AfterStrike() {
		//
		// setup:
		StandardFrame sut1 = new StandardFrame();
		//
		// exercise:
		sut1.addThrowScore(10);

		sut1.addThrowScore(0);	
		// verify: see annotation expected

		// tear-down: not needed.
	}
die einzige Methode auf die zugegriffen wird ist die addThrowScore und sieht wie folgt aus:

Code: Alles auswählen

@Override
	public void addThrowScore(int score) {
		// check whether the input is invalid
		if (score < 0 || score > 10)
			throw new IllegalArgumentException("The score[" + score
					+ "] is out of bounds(0,10).");

		if (!hasFirstThrow()) {
			setFirstThrowScore(score);
			return;
		}
		if (!hasSecondThrow()) {
			// check whether the input is invalid for this second throw
			if (getFirstThrowScore() != 10 && getFirstThrowScore() + score > 10)
				throw new IllegalArgumentException("The score[" + score
						+ "] is in addition with the current score["
						+ getFirstThrowScore() + "] out of bounds(0,10).");
			setSecondThrowScore(score); 
			return;
		}
		// invalid state
		throw new IllegalStateException(
				"This frame has already been used for three throws.");
	}
die im Textfall erwartete Exception wird jedoch niemals ausgelöst, da die Werte 10 und 0 von der Methode als First und SecondThrow angenommen wird. Meines erachtens, sollten wir keine Änderungen in dieser Methode vornehmen. Somit schlägt der Testfall fehl.

Kann mir jemand sagen wo mein Denkfehler liegt?

Sebastian Hartte
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 236
Registriert: 15. Apr 2004 17:57

Re: Tests Übung 10 Aufgabe 2

Beitrag von Sebastian Hartte »

Bei mir schlägt der Testfall auch fehl. Es fehlt wohl ein isStrike() oder isFinished() check in addThrow().

Ich habs an Ralf gemeldet.

Gruß,
Sebastian

ice-breaker
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 216
Registriert: 14. Okt 2008 17:56

Re: Tests Übung 10 Aufgabe 2

Beitrag von ice-breaker »

De Bedingung in hasSecondThrow stimmt nicht, hatte ich bei mir schon korrigiert.

so funktioniert alles (logische Checks korrigiert)

Code: Alles auswählen

if (!hasSecondThrow()) {
	// check whether the input is invalid for this second throw
	if (getFirstThrowScore() == 10 || getFirstThrowScore() + score > 10)
		throw new IllegalArgumentException("The score[" + score + "] is in addition with the current score[" + getFirstThrowScore() + "] out of bounds(0,10).");
	setSecondThrowScore(score);
	return;
}

Manolis
Mausschubser
Mausschubser
Beiträge: 61
Registriert: 29. Sep 2008 21:41
Wohnort: Frankfurt
Kontaktdaten:

Re: Tests Übung 10 Aufgabe 2

Beitrag von Manolis »

Gibt es jetzt ne offizielle Version wie die Methode richtig aussehen muss?
IT Consultant der msg systems ag und Hochschulpate (Alumnus) der TU Darmstadt

> Bei Fragen und Interesse kommt gerne auf mich zu: Manolis.Pavlakis@msg.group

mitschke
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 184
Registriert: 10. Okt 2008 16:09

Re: Tests Übung 10 Aufgabe 2

Beitrag von mitschke »

Hallo,

die Vorgabe im SVN ist jetzt geupdated.
Der letzte merge mit der Musterlösung war leider nicht korrekt, daher hatte dieser Methode nicht das letzte update.

Die Vorgabe sieht so aus:

Code: Alles auswählen

if (!hasSecondThrow()) {
	if (isStrike())
		throw new IllegalArgumentException(
				"This frame is already a strike and does not take anymore scores.");

	// check whether the input is invalid for this second throw
	if (getFirstThrowScore() + score > 10)
		throw new IllegalArgumentException("The score[" + score
				+ "] is in addition with the current score["
				+ getFirstThrowScore() + "] out of bounds(0,10).");
	setSecondThrowScore(score);
	return;
}
Dipl.-Inform. Ralf Mitschke <mitschke@st.informatik.tu-...>

Software Technology Group

Manolis
Mausschubser
Mausschubser
Beiträge: 61
Registriert: 29. Sep 2008 21:41
Wohnort: Frankfurt
Kontaktdaten:

Re: Tests Übung 10 Aufgabe 2

Beitrag von Manolis »

Reicht es, wenn wir diesen abschnitt des Codes ersetzen? Oder wurde noch mehr aktualisier?
IT Consultant der msg systems ag und Hochschulpate (Alumnus) der TU Darmstadt

> Bei Fragen und Interesse kommt gerne auf mich zu: Manolis.Pavlakis@msg.group

zeri
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 17. Jul 2009 23:25

Re: Tests Übung 10 Aufgabe 2

Beitrag von zeri »

Der testcase testcalcAccumulatedScore_Strike_NoBonusScore failed bei mir.
imho sieht dieser test wie folgt aus:
2 Frames das 1. ein Strike (10 punkte im ersten Wurf) und das 2. 0 punkte

die Gesamtpunktezahl dieser beiden Frames wäre 20 (10 punkte + 0 + 0 + 10 bonus) der test erwartet aber 10 punkte. Was habe ich falsch verstanden?
don't get even, get odd!

Sebastian Hartte
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 236
Registriert: 15. Apr 2004 17:57

Re: Tests Übung 10 Aufgabe 2

Beitrag von Sebastian Hartte »

zeri hat geschrieben:Der testcase testcalcAccumulatedScore_Strike_NoBonusScore failed bei mir.
imho sieht dieser test wie folgt aus:
2 Frames das 1. ein Strike (10 punkte im ersten Wurf) und das 2. 0 punkte

die Gesamtpunktezahl dieser beiden Frames wäre 20 (10 punkte + 0 + 0 + 10 bonus) der test erwartet aber 10 punkte. Was habe ich falsch verstanden?
Wo kommt Dein 10er Bonus her? Bei einem Strike werden die nächsten beiden Würfe dazuaddiert. Der Testfall ist also korrekt.

Gruß,
Sebastian

zeri
Windoof-User
Windoof-User
Beiträge: 34
Registriert: 17. Jul 2009 23:25

Re: Tests Übung 10 Aufgabe 2

Beitrag von zeri »

Sebastian Hartte hat geschrieben: Wo kommt Dein 10er Bonus her? Bei einem Strike werden die nächsten beiden Würfe dazuaddiert. Der Testfall ist also korrekt.
Ok dann beziehen sich diese 10 punkte also auf den ersten Wurf ... ist dieser Test dann nicht irgendwie nunja schlecht? Ich mein er findet einen der wahrscheinlichsten fehler nicht ... nämlich den, dass man einfach immer nur die punkte des frames aufaddiert.

-Julian
don't get even, get odd!

Antworten

Zurück zu „Archiv“