Add test for Tichu.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-12-27 11:58:59 +01:00
parent 252889eff7
commit db5384201f

View File

@@ -0,0 +1,62 @@
package me.zobrist.tichucounter
import me.zobrist.tichucounter.domain.Round
import me.zobrist.tichucounter.domain.Tichu
import org.junit.Assert.*
import org.junit.Test
/**
* Example local unit test, which will execute on the development machine (host).
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
class TichuUnitTest {
@Test
fun calculation_isCorrect() {
var inputScoreA = 125
var inputScoreB = -25
val tichu: Tichu = Tichu()
// Normal round range -25 to 125 as input
while (inputScoreB <= 125) {
assertGeneratedRound(tichu, inputScoreA, inputScoreB)
inputScoreA -= 5
inputScoreB += 5
}
// Double win
assertGeneratedRound(tichu, 200, 0)
// Double win with Tichu
assertGeneratedRound(tichu, 300, 0)
// Double win with Grand Tichu
assertGeneratedRound(tichu, 400, 0)
//Good rounds trough Tichu
assertValidRound(tichu, Round(0,0))
assertValidRound(tichu, Round(-100,0))
//Bad rounds
assertInvalidRound(tichu, Round(5, 12))
assertInvalidRound(tichu, Round(12, 5))
assertInvalidRound(tichu, Round(5, 55))
}
private fun assertGeneratedRound(tichu: Tichu, scoreA: Int, expectedScoreB: Int) {
val round = Round(scoreA, tichu.calculateOtherScore(scoreA))
assertEquals(expectedScoreB, round.scoreB)
assertTrue(tichu.isValidRound(round))
}
private fun assertInvalidRound(tichu: Tichu, round: Round) {
assertFalse(tichu.isValidRound(round))
}
private fun assertValidRound(tichu: Tichu, round: Round) {
assertTrue(tichu.isValidRound(round))
}
}