Skip to content

Commit

Permalink
Merge pull request #27 from sirius/dnumber
Browse files Browse the repository at this point in the history
La til støtte for D-nummer
  • Loading branch information
eivinhb authored Sep 14, 2018
2 parents 316f31e + 3deae06 commit b41e030
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 2 deletions.
30 changes: 28 additions & 2 deletions src/main/java/no/bekk/bekkopen/person/FodselsnummerCalculator.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<Fodselsnummer> 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<Fodselsnummer> 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<Fodselsnummer> generateFodselsnummerForDate(String dateString, String centuryString) {
List<Fodselsnummer> result = new ArrayList<Fodselsnummer>();
for (int i = 999; i >= 0; i--) {
StringBuilder sb = new StringBuilder(dateString);
Expand All @@ -62,7 +88,7 @@ public static List<Fodselsnummer> 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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down

0 comments on commit b41e030

Please sign in to comment.