diff --git a/src/main/java/no/bekk/bekkopen/banking/KidnummerValidator.java b/src/main/java/no/bekk/bekkopen/banking/KidnummerValidator.java index 630f57d..50820dd 100644 --- a/src/main/java/no/bekk/bekkopen/banking/KidnummerValidator.java +++ b/src/main/java/no/bekk/bekkopen/banking/KidnummerValidator.java @@ -92,7 +92,8 @@ public static void validateChecksum(String kidnummer) { return; } String kMod11 = calculateMod11CheckSumAllowDash(getMod11Weights(k), k); - if ("-".equals(kMod11) || Integer.parseInt(kMod11) == k.getChecksumDigit()) { + String lastChar = kidnummer.substring(kidnummer.length() - 1); + if (kMod11.equals(lastChar)) { return; } throw new IllegalArgumentException(ERROR_INVALID_CHECKSUM + kidnummer); diff --git a/src/test/java/no/bekk/bekkopen/banking/KidnummerValidatorTest.java b/src/test/java/no/bekk/bekkopen/banking/KidnummerValidatorTest.java index e7ea1ff..0b47a8f 100644 --- a/src/test/java/no/bekk/bekkopen/banking/KidnummerValidatorTest.java +++ b/src/test/java/no/bekk/bekkopen/banking/KidnummerValidatorTest.java @@ -32,7 +32,6 @@ import static no.bekk.bekkopen.common.Checksums.ERROR_INVALID_CHECKSUM; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.containsString; -import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -42,6 +41,7 @@ public class KidnummerValidatorTest { private static final String KIDNUMMER_VALID_MOD10 = "2345676"; private static final String KIDNUMMER_VALID_MOD11 = "12345678903"; private static final String KIDNUMMER_INVALID_CHECKSUM = "2345674"; + private static final String KIDNUMMER_INVALID_CHECKSUM_MOD10_AND_MOD11 = "100030"; private static final String KIDNUMMER_INVALID_LENGTH_SHORT = "122"; private static final String KIDNUMMER_INVALID_LENGTH_LONG = "12345678901234567890123456"; private static final String KIDNUMMER_VALID_WITH_DASH = "1000005-"; @@ -83,9 +83,7 @@ public void testInvalidKidnummerWrongChecksum() { @Test public void testValidKidnummerMod10ButUnableToCalculateMod11() { - boolean result = KidnummerValidator.isValid("01290865"); - - assertEquals(true, result); + assertTrue(KidnummerValidator.isValid("01290865")); } @Test @@ -108,4 +106,8 @@ public void testKidWithDash() { assertTrue(KidnummerValidator.isValid(KIDNUMMER_VALID_WITH_DASH)); } + @Test + public void testInvalidKidnummerFailingBothMod10AndMod11() { + assertFalse(KidnummerValidator.isValid(KIDNUMMER_INVALID_CHECKSUM_MOD10_AND_MOD11)); + } }