Skip to content

Commit f12d666

Browse files
Updated tests to use test file from github.
1 parent d8f0721 commit f12d666

File tree

3 files changed

+115
-52
lines changed

3 files changed

+115
-52
lines changed

.travis.yml

Lines changed: 0 additions & 12 deletions
This file was deleted.

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ repositories {
99

1010
dependencies {
1111
testImplementation 'junit:junit:4.12'
12-
testCompile "junit:junit:4.12"
12+
testCompile ("junit:junit:4.12", "org.json:json:20200518")
1313
}
1414

1515
version = '0.1.0'
Lines changed: 114 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,136 @@
1+
import org.junit.BeforeClass;
12
import org.junit.Test;
3+
4+
import java.io.IOException;
5+
import java.io.InputStream;
6+
import java.net.URL;
7+
import java.nio.file.Files;
8+
import java.nio.file.Paths;
9+
import java.nio.file.StandardCopyOption;
10+
import java.util.ArrayList;
11+
import java.util.List;
12+
13+
import org.json.*;
14+
import org.junit.runners.Parameterized;
15+
216
import static org.junit.Assert.assertFalse;
317
import static org.junit.Assert.assertTrue;
418

19+
//@RunWith(Parameterized.class)
520
public class PersonnummerTest {
21+
private static Boolean fileLoaded = false;
22+
23+
private static List<Long> validSsnInt = new ArrayList<>();
24+
private static List<String> validSsnString = new ArrayList<>();
25+
private static List<Long> invalidSsnInt = new ArrayList<>();
26+
private static List<String> invalidSsnString = new ArrayList<>();
27+
private static List<Long> validConInt = new ArrayList<>();
28+
private static List<String> validConString = new ArrayList<>();
29+
private static List<Long> invalidConInt = new ArrayList<>();
30+
private static List<String> invalidConString = new ArrayList<>();
31+
32+
33+
@BeforeClass
34+
public static void loadTestData() throws IOException {
35+
if (fileLoaded) {
36+
return;
37+
}
38+
39+
if (!Files.exists(Paths.get("temp.json"))) {
40+
InputStream in = new URL("https://raw.githubusercontent.com/personnummer/meta/master/testdata/structured.json").openStream();
41+
Files.copy(in, Paths.get("temp.json"), StandardCopyOption.REPLACE_EXISTING);
42+
fileLoaded = true;
43+
}
44+
45+
String jsonString = new String(Files.readAllBytes(Paths.get("temp.json")));
46+
JSONObject json = new JSONObject(jsonString);
47+
48+
JSONObject ssn = json.getJSONObject("ssn");
49+
JSONObject con = json.getJSONObject("con");
50+
51+
validSsnInt = getIntList(ssn, "integer", "valid");
52+
invalidSsnInt = getIntList(ssn, "integer", "invalid");
53+
validSsnString = getStringList(ssn, "string", "valid");
54+
invalidSsnString = getStringList(ssn, "string", "invalid");
55+
56+
validConInt = getIntList(con, "integer", "valid");
57+
invalidConInt = getIntList(con, "integer", "invalid");
58+
validConString = getStringList(con, "string", "valid");
59+
invalidConString = getStringList(con, "string", "invalid");
60+
}
61+
62+
private static ArrayList<String> getStringList(JSONObject root, String dataType, String valid) {
63+
JSONArray arr = root.getJSONObject(dataType).getJSONArray(valid);
64+
ArrayList<String> result = new ArrayList<>();
65+
for (int i=0; i<arr.length(); i++) {
66+
result.add(arr.getString(i));
67+
}
68+
return result;
69+
}
70+
71+
private static ArrayList<Long> getIntList(JSONObject root, String dataType, String valid) {
72+
JSONArray arr = root.getJSONObject(dataType).getJSONArray(valid);
73+
ArrayList<Long> result = new ArrayList<>();
74+
for (int i=0; i<arr.length(); i++) {
75+
result.add(arr.getLong(i));
76+
}
77+
return result;
78+
}
79+
80+
@Test
81+
public void testPersonnNummerWithInvalidIntegerValues() {
82+
for (Long ssn: invalidSsnInt) {
83+
assertFalse(Personnummer.valid(ssn));
84+
}
85+
}
86+
87+
@Test
88+
public void testCoordinationNummerWithInvalidIntegerValues() {
89+
for (Long ssn: invalidConInt) {
90+
assertFalse(Personnummer.valid(ssn));
91+
}
92+
}
93+
94+
@Test
95+
public void testPersonnNummerWithInvalidStringValues() {
96+
for (String ssn: invalidSsnString) {
97+
assertFalse(Personnummer.valid(ssn));
98+
}
99+
}
6100

7101
@Test
8-
public void testWithControlDigit() {
9-
assertTrue(Personnummer.valid("6403273813"));
10-
assertTrue(Personnummer.valid("510818-9167"));
11-
assertTrue(Personnummer.valid("19900101-0017"));
12-
assertTrue(Personnummer.valid("19130401+2931"));
13-
assertTrue(Personnummer.valid("196408233234"));
14-
assertTrue(Personnummer.valid("0001010107"));
15-
assertTrue(Personnummer.valid("000101-0107"));
16-
assertTrue(Personnummer.valid("1010101010"));
17-
assertTrue(Personnummer.valid(6403273813L));
18-
assertTrue(Personnummer.valid(5108189167L));
19-
assertTrue(Personnummer.valid(199001010017L));
20-
assertTrue(Personnummer.valid(191304012931L));
21-
assertTrue(Personnummer.valid(196408233234L));
102+
public void testCoordinationNummerWithInvalidStringValues() {
103+
for (String ssn: invalidConString) {
104+
assertFalse(Personnummer.valid(ssn));
105+
}
22106
}
23107

24108
@Test
25-
public void testWithoutControlDigit() {
26-
assertFalse(Personnummer.valid(640327381L));
27-
assertFalse(Personnummer.valid(510818916L));
28-
assertFalse(Personnummer.valid(19900101001L));
29-
assertFalse(Personnummer.valid(100101001L));
30-
assertFalse(Personnummer.valid("640327-381"));
31-
assertFalse(Personnummer.valid("510818-916"));
32-
assertFalse(Personnummer.valid("19900101-001"));
33-
assertFalse(Personnummer.valid("100101+001"));
109+
public void testPersonnNummerWithValidIntegerValues() {
110+
for (Long ssn: validSsnInt) {
111+
assertTrue(Personnummer.valid(ssn));
112+
}
34113
}
35114

36115
@Test
37-
public void testWithInvalidValues() {
38-
assertFalse(Personnummer.valid("A string"));
39-
assertFalse(Personnummer.valid("Two"));
40-
assertFalse(Personnummer.valid("222"));
41-
assertFalse(Personnummer.valid(null));
42-
assertFalse(Personnummer.valid("9701063-2391"));
116+
public void testCoordinationNummerVnvalidIntegerValues() {
117+
for (Long ssn: validConInt) {
118+
assertTrue(Personnummer.valid(ssn));
119+
}
43120
}
44121

45122
@Test
46-
public void testCoordinationNumbers() {
47-
assertTrue(Personnummer.valid("701063-2391"));
48-
assertTrue(Personnummer.valid("640883-3231"));
49-
assertTrue(Personnummer.valid(7010632391L));
50-
assertTrue(Personnummer.valid(6408833231L));
123+
public void testPersonnNummerWithValidStringValues() {
124+
for (String ssn: validSsnString) {
125+
assertTrue(Personnummer.valid(ssn));
126+
}
51127
}
52128

53129
@Test
54-
public void testWithBadCoordinationNumbers() {
55-
assertFalse(Personnummer.valid(9001610017L));
56-
assertFalse(Personnummer.valid(6408933231L));
57-
assertFalse(Personnummer.valid("900161-0017"));
58-
assertFalse(Personnummer.valid("640893-3231"));
130+
public void testCoordinationNummerWithValidStringValues() {
131+
for (String ssn: validConString) {
132+
assertTrue(Personnummer.valid(ssn));
133+
}
59134
}
60135

61136
}

0 commit comments

Comments
 (0)