Fixed that if Luhn sum modulo 10 is 0, then checksum is 0 not 10

This commit is contained in:
dankl 2020-01-02 14:34:05 +01:00 committed by dankito
parent 9869b44ccd
commit 0d60cd2c3e
2 changed files with 22 additions and 0 deletions

View File

@ -132,6 +132,15 @@ open class FlickercodeDecoder {
asNumber
}.sum()
val luhnSumModulo10 = luhnSum % 10
// Schritt 3: Das Ergebnis der Addition aus Schritt 2 ist von dem auf die nächst höhere Zahl mit der
// Einerstelle 0 aufgerundeten Ergebnis der Addition aus Schritt 2 abzuziehen. Wenn das Ergebnis der Addition
// aus Schritt 2 bereits eine Zahl mit der Einerstelle 0 ergibt (z. B. 30, 40, usw.), ist die Prüfziffer 0.
if (luhnSumModulo10 == 0) {
return 0
}
return 10 - (luhnSum % 10)
}

View File

@ -53,4 +53,17 @@ class FlickercodeDecoderTest {
assertThat(result.parsedDataSet).isEqualTo("1204881696280598765432101533322C30303A")
}
@Test
fun decodeChallenge_CheckLuhnSumModulo10Is0() {
// given
val challenge = "100880040243"
// when
val result = underTest.decodeChallenge(challenge)
// then
assertThat(result.parsedDataSet).isEqualTo("0604800402430B")
}
}