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
|
asNumber
|
||||||
}.sum()
|
}.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)
|
return 10 - (luhnSum % 10)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,4 +53,17 @@ class FlickercodeDecoderTest {
|
||||||
assertThat(result.parsedDataSet).isEqualTo("1204881696280598765432101533322C30303A")
|
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