Fixed that if Luhn sum modulo 10 is 0, then checksum is 0 not 10
This commit is contained in:
parent
9869b44ccd
commit
0d60cd2c3e
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue