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.Province;
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 ProvinceTests
27 {
28
29
30
31 private static final String ABC = "abc";
32
33
34
35
36 private static final String ABCD = "abcd";
37
38
39
40
41 private static final String DEF = "def";
42
43
44
45
46 private static final String ILLEGAL_ARGUMENT = "Illegal argument exception expected";
47
48
49
50
51 private static final String PROVINCE_NOT_AS_EXPECTED = "Province not as expected";
52
53
54
55
56
57 ProvinceTests()
58 {
59 super();
60 }
61
62
63
64
65
66
67
68 @ParameterizedTest
69 @ValueSource(strings = {"A", "Abcdefghijklmnopqr"})
70 void testProvinceCorrect(final String province)
71 {
72 final Province cleanProvince = Province.of(province);
73 assertEquals(province, cleanProvince.stringValue(), ProvinceTests.PROVINCE_NOT_AS_EXPECTED);
74 }
75
76
77
78
79
80
81
82 @ParameterizedTest
83 @ValueSource(strings = {"", "Abcdefghijklmnopqrs"})
84 void testProvinceLength(final String province)
85 {
86 assertThrows(IllegalArgumentException.class, () ->
87 {
88 Province.of(province);
89 }, ProvinceTests.ILLEGAL_ARGUMENT
90 );
91 }
92
93
94
95
96
97
98
99 @ParameterizedTest
100 @ValueSource(strings = {"abc0815", "abc_def"})
101 void testProvinceWrong(final String province)
102 {
103 assertThrows(IllegalArgumentException.class, () ->
104 {
105 Province.of(province);
106 }, ProvinceTests.ILLEGAL_ARGUMENT
107 );
108 }
109
110
111
112
113
114 @Test
115 void testStringValue()
116 {
117 final Province province = Province.of(ProvinceTests.ABCD);
118 assertEquals(ProvinceTests.ABCD, province.stringValue(), ProvinceTests.PROVINCE_NOT_AS_EXPECTED);
119 }
120
121
122
123
124
125 @Test
126 void testHashCode()
127 {
128 final Province province1 = Province.of(ProvinceTests.ABC);
129 final Province province2 = Province.of(ProvinceTests.ABC);
130 final Province province3 = Province.of(ProvinceTests.DEF);
131 assertAll("testHashCode",
132 () -> assertEquals(province1.hashCode(), province2.hashCode(), "hashCodes are not equal"),
133 () -> assertNotEquals(province1.hashCode(), province3.hashCode(), "hashCodes are equal")
134 );
135 }
136
137
138
139
140
141 @Test
142 @SuppressWarnings("java:S5785")
143 void testEquals()
144 {
145 final Province province1 = Province.of(ProvinceTests.ABC);
146 final Province province2 = Province.of(ProvinceTests.ABC);
147 final Province province3 = Province.of(ProvinceTests.DEF);
148 final Province province4 = Province.of(ProvinceTests.ABC);
149 assertAll("testEquals",
150 () -> assertTrue(province1.equals(province1), "province11 is not equal"),
151 () -> assertTrue(province1.equals(province2), "province12 are not equal"),
152 () -> assertTrue(province2.equals(province1), "province21 are not equal"),
153 () -> assertTrue(province2.equals(province4), "province24 are not equal"),
154 () -> assertTrue(province1.equals(province4), "province14 are not equal"),
155 () -> assertFalse(province1.equals(province3), "province13 are equal"),
156 () -> assertFalse(province3.equals(province1), "province31 are equal"),
157 () -> assertFalse(province1.equals(null), "province10 is equal")
158 );
159 }
160
161
162
163
164
165 @Test
166 void testToString()
167 {
168 final Province province = Province.of(ProvinceTests.ABC);
169 assertEquals("Province[province=abc]", province.toString(), "toString not equal");
170 }
171
172
173
174
175
176 @Test
177 @SuppressWarnings("java:S5785")
178 void testCompareTo()
179 {
180 final Province province1 = Province.of(ProvinceTests.ABC);
181 final Province province2 = Province.of(ProvinceTests.ABC);
182 final Province province3 = Province.of(ProvinceTests.DEF);
183 final Province province4 = Province.of("ghi");
184 final Province province5 = Province.of(ProvinceTests.ABC);
185 assertAll("testCompareTo",
186 () -> assertTrue(province1.compareTo(province2) == -province2.compareTo(province1), "reflexive1"),
187 () -> assertTrue(province1.compareTo(province3) == -province3.compareTo(province1), "reflexive2"),
188 () -> assertTrue((province4.compareTo(province3) > 0) && (province3.compareTo(province1) > 0) && (province4.compareTo(province1) > 0), "transitive1"),
189 () -> assertTrue((province1.compareTo(province2) == 0) && (Math.abs(province1.compareTo(province5)) == Math.abs(province2.compareTo(province5))), "sgn1"),
190 () -> assertTrue((province1.compareTo(province2) == 0) && province1.equals(province2), "equals")
191 );
192 }
193
194 }