1
2
3
4 package de.powerstat.validation.values.test;
5
6
7 import static org.junit.jupiter.api.Assertions.assertAll;
8 import static org.junit.jupiter.api.Assertions.assertEquals;
9 import static org.junit.jupiter.api.Assertions.assertFalse;
10 import static org.junit.jupiter.api.Assertions.assertNotEquals;
11 import static org.junit.jupiter.api.Assertions.assertThrows;
12 import static org.junit.jupiter.api.Assertions.assertTrue;
13
14 import org.junit.jupiter.api.Test;
15 import org.junit.jupiter.params.ParameterizedTest;
16 import org.junit.jupiter.params.provider.ValueSource;
17
18 import de.powerstat.validation.values.Lastname;
19 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
20
21
22
23
24
25 @SuppressFBWarnings({"EC_NULL_ARG", "RV_NEGATING_RESULT_OF_COMPARETO", "RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT", "SPP_USE_ZERO_WITH_COMPARATOR"})
26 final class LastnameTests
27 {
28
29
30
31 private static final String LASTNAME = "lastname";
32
33
34
35
36 private static final String LASTNAMEZ = "lastnamez";
37
38
39
40
41 private static final String ILLEGAL_ARGUMENT = "Illegal argument exception expected";
42
43
44
45
46 private static final String LASTNAME_NOT_AS_EXPECTED = "Lastname not as expected";
47
48
49
50
51
52 LastnameTests()
53 {
54 super();
55 }
56
57
58
59
60
61
62
63 @ParameterizedTest
64 @ValueSource(strings = {"H", "Hofmann", LastnameTests.LASTNAME, "AbcdefghijklmnopqrstuvwxyzäöüßABCDEFGHIJ"})
65 void testLastnameOk0(final String lastname)
66 {
67 final Lastname cleanLastname = Lastname.of(lastname);
68 assertEquals(lastname, cleanLastname.stringValue(), LastnameTests.LASTNAME_NOT_AS_EXPECTED);
69 }
70
71
72
73
74
75
76
77 @ParameterizedTest
78 @ValueSource(strings = {"", "AbcdefghijklmnopqrstuvwxyzäöüßABCDEFGHIJK"})
79 void testLastnameLength(final String lastname)
80 {
81 assertThrows(IllegalArgumentException.class, () ->
82 {
83 Lastname.of(lastname);
84 }, LastnameTests.ILLEGAL_ARGUMENT
85 );
86 }
87
88
89
90
91
92 @Test
93 void testLastnameWithIllegalCharacters0()
94 {
95 assertThrows(IllegalArgumentException.class, () ->
96 {
97 Lastname.of("^!$%&(){}[]=?+*#´§;,:'\"");
98 }, LastnameTests.ILLEGAL_ARGUMENT
99 );
100 }
101
102
103
104
105
106 @Test
107 void testStringValue()
108 {
109 final Lastname lastname = Lastname.of(LastnameTests.LASTNAME);
110 assertEquals(LastnameTests.LASTNAME, lastname.stringValue(), LastnameTests.LASTNAME_NOT_AS_EXPECTED);
111 }
112
113
114
115
116
117 @Test
118 void testHashCode()
119 {
120 final Lastname lastname1 = Lastname.of(LastnameTests.LASTNAME);
121 final Lastname lastname2 = Lastname.of(LastnameTests.LASTNAME);
122 final Lastname lastname3 = Lastname.of(LastnameTests.LASTNAMEZ);
123 assertAll("testHashCode",
124 () -> assertEquals(lastname1.hashCode(), lastname2.hashCode(), "hashCodes are not equal"),
125 () -> assertNotEquals(lastname1.hashCode(), lastname3.hashCode(), "hashCodes are equal")
126 );
127 }
128
129
130
131
132
133 @Test
134 @SuppressWarnings("java:S5785")
135 void testEquals()
136 {
137 final Lastname lastname1 = Lastname.of(LastnameTests.LASTNAME);
138 final Lastname lastname2 = Lastname.of(LastnameTests.LASTNAME);
139 final Lastname lastname3 = Lastname.of(LastnameTests.LASTNAMEZ);
140 final Lastname lastname4 = Lastname.of(LastnameTests.LASTNAME);
141 assertAll("testEquals",
142 () -> assertTrue(lastname1.equals(lastname1), "lastname11 is not equal"),
143 () -> assertTrue(lastname1.equals(lastname2), "lastname12 are not equal"),
144 () -> assertTrue(lastname2.equals(lastname1), "lastname21 are not equal"),
145 () -> assertTrue(lastname2.equals(lastname4), "lastname24 are not equal"),
146 () -> assertTrue(lastname1.equals(lastname4), "lastname14 are not equal"),
147 () -> assertFalse(lastname1.equals(lastname3), "lastname13 are equal"),
148 () -> assertFalse(lastname3.equals(lastname1), "lastname31 are equal"),
149 () -> assertFalse(lastname1.equals(null), "lastname10 is equal")
150 );
151 }
152
153
154
155
156
157 @Test
158 void testToString()
159 {
160 final Lastname lastname = Lastname.of(LastnameTests.LASTNAME);
161 assertEquals("Lastname[lastname=lastname]", lastname.toString(), "toString not equal");
162 }
163
164
165
166
167
168 @Test
169 @SuppressWarnings("java:S5785")
170 void testCompareTo()
171 {
172 final Lastname lastname1 = Lastname.of(LastnameTests.LASTNAME);
173 final Lastname lastname2 = Lastname.of(LastnameTests.LASTNAME);
174 final Lastname lastname3 = Lastname.of("lastnamey");
175 final Lastname lastname4 = Lastname.of(LastnameTests.LASTNAMEZ);
176 final Lastname lastname5 = Lastname.of(LastnameTests.LASTNAME);
177 assertAll("testCompareTo",
178 () -> assertTrue(lastname1.compareTo(lastname2) == -lastname2.compareTo(lastname1), "reflexive1"),
179 () -> assertTrue(lastname1.compareTo(lastname3) == -lastname3.compareTo(lastname1), "reflexive2"),
180 () -> assertTrue((lastname4.compareTo(lastname3) > 0) && (lastname3.compareTo(lastname1) > 0) && (lastname4.compareTo(lastname1) > 0), "transitive1"),
181 () -> assertTrue((lastname1.compareTo(lastname2) == 0) && (Math.abs(lastname1.compareTo(lastname5)) == Math.abs(lastname2.compareTo(lastname5))), "sgn1"),
182 () -> assertTrue((lastname1.compareTo(lastname2) == 0) && lastname1.equals(lastname2), "equals")
183 );
184 }
185
186 }