From 3deae06c958afa7cf951269bda539077fdf26f23 Mon Sep 17 00:00:00 2001 From: Sirius Bakke Date: Wed, 12 Sep 2018 14:01:14 +0200 Subject: [PATCH] =?UTF-8?q?La=20til=20st=C3=B8tte=20for=20D-nummer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../person/FodselsnummerCalculator.java | 30 +++++++++++++++++-- .../person/FodselsnummerCalculatorTest.java | 21 +++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/main/java/no/bekk/bekkopen/person/FodselsnummerCalculator.java b/src/main/java/no/bekk/bekkopen/person/FodselsnummerCalculator.java index fb426f9..f729db2 100644 --- a/src/main/java/no/bekk/bekkopen/person/FodselsnummerCalculator.java +++ b/src/main/java/no/bekk/bekkopen/person/FodselsnummerCalculator.java @@ -31,19 +31,45 @@ public static Fodselsnummer getFodselsnummerForDate(Date date){ return fodselsnummerList.get(0); } + /** + * Returns a List with with VALID DNumber Fodselsnummer instances for a given Date. + * + * @param date The Date instance + * @return A List with Fodelsnummer instances + */ + + public static List getManyDNumberFodselsnummerForDate(Date date) { + if (date == null) { + throw new IllegalArgumentException(); + } + DateFormat df = new SimpleDateFormat("ddMMyy"); + String centuryString = getCentury(date); + String dateString = df.format(date); + dateString = new StringBuilder() + .append(dateString.charAt(0) + 4) + .append(dateString.substring(1)) + .toString(); + return generateFodselsnummerForDate(dateString, centuryString); + } + /** * Returns a List with with VALID Fodselsnummer instances for a given Date. * * @param date The Date instance * @return A List with Fodelsnummer instances */ + public static List getManyFodselsnummerForDate(Date date) { if (date == null) { throw new IllegalArgumentException(); } DateFormat df = new SimpleDateFormat("ddMMyy"); - String century = getCentury(date); + String centuryString = getCentury(date); String dateString = df.format(date); + return generateFodselsnummerForDate(dateString, centuryString); + } + + private static List generateFodselsnummerForDate(String dateString, String centuryString) { List result = new ArrayList(); for (int i = 999; i >= 0; i--) { StringBuilder sb = new StringBuilder(dateString); @@ -62,7 +88,7 @@ public static List getManyFodselsnummerForDate(Date date) { fodselsnummer = new Fodselsnummer(sb.toString()); String centuryByIndividnummer = fodselsnummer.getCentury(); - if (centuryByIndividnummer != null && centuryByIndividnummer.equals(century) && FodselsnummerValidator.isValid(fodselsnummer.getValue())) { + if (centuryByIndividnummer != null && centuryByIndividnummer.equals(centuryString) && FodselsnummerValidator.isValid(fodselsnummer.getValue())) { result.add(fodselsnummer); } } catch (IllegalArgumentException e) { diff --git a/src/test/java/no/bekk/bekkopen/person/FodselsnummerCalculatorTest.java b/src/test/java/no/bekk/bekkopen/person/FodselsnummerCalculatorTest.java index c73cc8c..e2b3c7e 100755 --- a/src/test/java/no/bekk/bekkopen/person/FodselsnummerCalculatorTest.java +++ b/src/test/java/no/bekk/bekkopen/person/FodselsnummerCalculatorTest.java @@ -49,6 +49,27 @@ public void testThatAllGeneratedNumbersAreValid() { } } + @Test + public void testThatAllGeneratedNumbersAreNotDNumbers() { + for(Fodselsnummer fnr : FodselsnummerCalculator.getManyFodselsnummerForDate(date)) { + assertTrue("Ugyldig fødselsnummer: " + fnr, Fodselsnummer.isDNumber(fnr.toString()) != true); + } + } + + @Test + public void testThatAllGeneratedDNumbersAreValid() { + for(Fodselsnummer dnr : FodselsnummerCalculator.getManyDNumberFodselsnummerForDate(date)) { + assertTrue("Ugyldig D-nummer: " + dnr, FodselsnummerValidator.isValid(dnr.toString())); + } + } + + @Test + public void testThatAllGeneratedDNumbersAreDNumbers() { + for(Fodselsnummer dnr : FodselsnummerCalculator.getManyDNumberFodselsnummerForDate(date)) { + assertTrue("Ugyldig D-nummer: " + dnr, Fodselsnummer.isDNumber(dnr.toString()) == true); + } + } + @Test public void testInvalidDateTooEarly() throws ParseException { date = df.parse("09091853");