11import static org .junit .jupiter .api .Assertions .*;
2- import org .junit .jupiter .api .Test ;
2+
3+ import java .util .ArrayList ;
4+ import java .util .List ;
5+
6+ import org .junit .jupiter .api .*;
37import dev .personnummer .*;
48
59class PersonnummerEqualsHashcode {
6-
10+
11+ private static final String YOUNG_LONG_FORMAT = "201701022384" ;
12+
713 @ Test
814 void testEquals () throws PersonnummerException {
915
10- assertEquals (new Personnummer ("201701022384" ), new Personnummer ("201701022384" ));
11- assertEquals (new Personnummer ("201701022384" ), new Personnummer ("20170102-2384" ));
12- assertEquals (new Personnummer ("201701022384" ), new Personnummer ("20170102+2384" ));
13- assertEquals (new Personnummer ("201701022384" ), new Personnummer ("170102-2384" ));
16+ assertEquals (new Personnummer (YOUNG_LONG_FORMAT ), new Personnummer (YOUNG_LONG_FORMAT ));
17+ assertEquals (new Personnummer (YOUNG_LONG_FORMAT ), new Personnummer ("20170102-2384" ));
18+ assertEquals (new Personnummer (YOUNG_LONG_FORMAT ), new Personnummer ("20170102+2384" ));
19+ assertEquals (new Personnummer (YOUNG_LONG_FORMAT ), new Personnummer ("170102-2384" ));
1420
1521 assertNotEquals (new Personnummer ("170102+2384" ), new Personnummer ("170102-2384" ));
16- assertNotEquals (new Personnummer ("201701022384" ), new Personnummer ("191701022384" ));
22+ assertNotEquals (new Personnummer (YOUNG_LONG_FORMAT ), new Personnummer ("191701022384" ));
1723 assertNotEquals (new Personnummer ("20170102-2384" ), new Personnummer ("19170102-2384" ));
1824 assertNotEquals (new Personnummer ("20170102+2384" ), new Personnummer ("19170102+2384" ));
1925
@@ -22,7 +28,7 @@ void testEquals() throws PersonnummerException {
2228 @ Test
2329 void testHashCode () throws PersonnummerException {
2430
25- Personnummer young = new Personnummer ("201701022384" );
31+ Personnummer young = new Personnummer (YOUNG_LONG_FORMAT );
2632 Personnummer young2 = new Personnummer ("1701022384" );
2733 Personnummer other = new Personnummer ("194308239088" );
2834
@@ -34,9 +40,54 @@ void testHashCode() throws PersonnummerException {
3440 @ Test
3541 void testToString () throws PersonnummerException {
3642
37- Personnummer young = new Personnummer ("201701022384" );
43+ Personnummer young = new Personnummer (YOUNG_LONG_FORMAT );
3844 assertEquals ("170102-2384" , young .toString ());
3945 assertEquals (young .format (), young .toString ());
4046 }
4147
48+ @ Test
49+ void naturalOrderingWorks () throws PersonnummerException {
50+
51+ List <Personnummer > numbers = new ArrayList <>();
52+
53+ final Personnummer retiree = new Personnummer ("194308239088" );
54+ final Personnummer young = new Personnummer (YOUNG_LONG_FORMAT );
55+ final Personnummer centenarian = new Personnummer ("170102+2384" );
56+
57+
58+ numbers .add (retiree );
59+ numbers .add (young );
60+ numbers .add (centenarian );
61+ numbers .add (retiree );
62+ assertEquals (4 , numbers .size ());
63+
64+ numbers .sort (null );
65+
66+ assertEquals (centenarian , numbers .get (0 ));
67+ assertEquals (retiree , numbers .get (1 ));
68+ assertEquals (retiree , numbers .get (2 ));
69+ assertEquals (young , numbers .get (3 ));
70+ }
71+
72+ @ Test
73+ void testLongFormat () throws PersonnummerException {
74+
75+ final Personnummer centenarian = new Personnummer ("170102+2384" );
76+ assertEquals ("191701022384" , centenarian .format (true ));
77+ }
78+
79+
80+ @ Test ()
81+ void disallowNullValuesForOrdering () throws PersonnummerException {
82+
83+ final Personnummer young = new Personnummer (YOUNG_LONG_FORMAT );
84+
85+ assertFalse (young .equals (null ));
86+ assertThrows (NullPointerException .class , () -> {
87+ young .compareTo (null );
88+ });
89+
90+
91+ }
92+
4293}
0 commit comments