From c743fceefb0cda692a1bfc2687b5b6b885df0cae Mon Sep 17 00:00:00 2001 From: TrueJacobG Date: Wed, 6 Nov 2024 21:49:44 +0100 Subject: [PATCH 1/4] swedish ssn cannot have format like XXXXXX-000X, the number part has to be between 001 and 999 --- .../java/net/datafaker/idnumbers/SwedenIdNumber.java | 11 ++++++++++- .../net/datafaker/idnumbers/SwedishIdNumberTest.java | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java index 2d28a0e08..7d09b6cdd 100644 --- a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java @@ -37,7 +37,7 @@ public String getValidSsn(BaseProviders f) { @Override public PersonIdNumber generateValid(BaseProviders f, IdNumber.IdNumberRequest request) { LocalDate birthday = birthday(f, request); - String end = f.numerify("###"); + String end = generateEndPart(f); String basePart = DATE_TIME_FORMATTER.format(birthday) + f.options().option(PLUS_MINUS) + end; @@ -45,6 +45,15 @@ public PersonIdNumber generateValid(BaseProviders f, IdNumber.IdNumberRequest re return new PersonIdNumber(idNumber, birthday, gender(f, request)); } + private String generateEndPart(BaseProviders f) { + String end; + do { + end = f.numerify("###"); + } while (!end.equals("000")); + + return end; + } + @Deprecated public String getInvalidSsn(BaseProviders f) { return generateInvalid(f); diff --git a/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java index 4224652e4..98d131b5b 100644 --- a/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java @@ -14,6 +14,7 @@ void validSwedishSsn() { @Test void invalidSwedishSsn() { + assertThat(SwedenIdNumber.isValidSwedishSsn("020914-0001")).isFalse(); assertThat(SwedenIdNumber.isValidSwedishSsn("8112289873")).isFalse(); assertThat(SwedenIdNumber.isValidSwedishSsn("foo228-9873")).isFalse(); assertThat(SwedenIdNumber.isValidSwedishSsn("811228-9873")).isFalse(); From a5202b52cde179a009389eba38a4e97ce46ea7a0 Mon Sep 17 00:00:00 2001 From: TrueJacobG Date: Thu, 7 Nov 2024 07:04:37 +0100 Subject: [PATCH 2/4] fix bug --- src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java | 6 +++++- .../java/net/datafaker/idnumbers/SwedishIdNumberTest.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java index 7d09b6cdd..61f531846 100644 --- a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java @@ -49,7 +49,7 @@ private String generateEndPart(BaseProviders f) { String end; do { end = f.numerify("###"); - } while (!end.equals("000")); + } while (end.equals("000")); return end; } @@ -87,6 +87,10 @@ public static boolean isValidSwedishSsn(String ssn) { return false; } + if(ssn.startsWith("000", 7)){ + return false; + } + int calculatedChecksum = calculateChecksum(ssn); int checksum = Integer.parseInt(ssn.substring(10, 11)); return checksum == calculatedChecksum; diff --git a/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java b/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java index 98d131b5b..f8bc7e84b 100644 --- a/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java +++ b/src/test/java/net/datafaker/idnumbers/SwedishIdNumberTest.java @@ -14,7 +14,7 @@ void validSwedishSsn() { @Test void invalidSwedishSsn() { - assertThat(SwedenIdNumber.isValidSwedishSsn("020914-0001")).isFalse(); + assertThat(SwedenIdNumber.isValidSwedishSsn("020914-0003")).isFalse(); assertThat(SwedenIdNumber.isValidSwedishSsn("8112289873")).isFalse(); assertThat(SwedenIdNumber.isValidSwedishSsn("foo228-9873")).isFalse(); assertThat(SwedenIdNumber.isValidSwedishSsn("811228-9873")).isFalse(); From bd8d52a70431d1df03da356b32bc8edec5a0abcb Mon Sep 17 00:00:00 2001 From: Rick M Date: Thu, 7 Nov 2024 02:25:46 -0500 Subject: [PATCH 3/4] Fix code formatting --- src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java index 61f531846..95171617a 100644 --- a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java @@ -87,7 +87,7 @@ public static boolean isValidSwedishSsn(String ssn) { return false; } - if(ssn.startsWith("000", 7)){ + if (ssn.startsWith("000", 7)) { return false; } From 8e4ac20f51133947c2a76f8714d29ab16bdf4220 Mon Sep 17 00:00:00 2001 From: TrueJacobG Date: Sat, 9 Nov 2024 08:28:03 +0100 Subject: [PATCH 4/4] remove unnecessary loop --- .../java/net/datafaker/idnumbers/SwedenIdNumber.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java index 61f531846..7a3b9bd9a 100644 --- a/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java +++ b/src/main/java/net/datafaker/idnumbers/SwedenIdNumber.java @@ -45,13 +45,8 @@ public PersonIdNumber generateValid(BaseProviders f, IdNumber.IdNumberRequest re return new PersonIdNumber(idNumber, birthday, gender(f, request)); } - private String generateEndPart(BaseProviders f) { - String end; - do { - end = f.numerify("###"); - } while (end.equals("000")); - - return end; + public static String generateEndPart(BaseProviders f) { + return "%03d".formatted(f.number().numberBetween(1, 1000)); } @Deprecated