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
16 import de.powerstat.validation.values.ScreenSize;
17 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
18
19
20
21
22
23 @SuppressFBWarnings({"EC_NULL_ARG", "RV_NEGATING_RESULT_OF_COMPARETO", "RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT", "SPP_USE_ZERO_WITH_COMPARATOR", "PRMC_POSSIBLY_REDUNDANT_METHOD_CALLS"})
24 final class ScreenSizeTests
25 {
26
27
28
29 private static final String QVGA = "QVGA";
30
31
32
33
34 private static final String QVGA320X240 = "320x240";
35
36
37
38
39 private static final String VGA = "VGA";
40
41
42
43
44 private static final String SIZE_IS_NOT_EQUAL = "Size is not equal";
45
46
47
48
49 private static final String INDEX_OUT_OF_BOUNDS_EXPECTED = "Index out of bounds exception expected";
50
51
52
53
54 private static final String WIDTH_IS_NOT_EQUAL = "width is not equal";
55
56
57
58
59 private static final String HEIGHT_IS_NOT_EQUAL = "height is not equal";
60
61
62
63
64 private static final String JAVA_S5785 = "java:S5785";
65
66
67
68
69
70 ScreenSizeTests()
71 {
72 super();
73 }
74
75
76
77
78
79 @Test
80 void testFactory1()
81 {
82 final ScreenSize size = ScreenSize.of(QVGA320X240);
83 assertAll("factory1",
84 () -> assertEquals(320, size.getWidth(), WIDTH_IS_NOT_EQUAL),
85 () -> assertEquals(240, size.getHeight(), HEIGHT_IS_NOT_EQUAL)
86 );
87 }
88
89
90
91
92
93 @Test
94 void testFactory2()
95 {
96 assertThrows(IllegalArgumentException.class, () ->
97 {
98 ScreenSize.of("320");
99 }, "Illegal argument exception"
100 );
101 }
102
103
104
105
106
107 @Test
108 void testIsScreenSize()
109 {
110 final ScreenSize size = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
111 assertAll("testScreenSize",
112 () -> assertEquals(320, size.getWidth(), WIDTH_IS_NOT_EQUAL),
113 () -> assertEquals(240, size.getHeight(), HEIGHT_IS_NOT_EQUAL),
114 () -> assertEquals(ScreenSizeTests.QVGA320X240, size.stringValue(), ScreenSizeTests.SIZE_IS_NOT_EQUAL),
115 () -> assertEquals(ScreenSizeTests.QVGA, size.getName(), "size name is not equal")
116 );
117 }
118
119
120
121
122
123 @Test
124 void testIsNotAScreenSize1()
125 {
126 assertThrows(IndexOutOfBoundsException.class, () ->
127 {
128 ScreenSize.of(0, 0, null);
129 }, ScreenSizeTests.INDEX_OUT_OF_BOUNDS_EXPECTED
130 );
131 }
132
133
134
135
136
137 @Test
138 void testIsNotAScreenSize2()
139 {
140 assertThrows(IndexOutOfBoundsException.class, () ->
141 {
142 ScreenSize.of(8193, 0, null);
143 }, ScreenSizeTests.INDEX_OUT_OF_BOUNDS_EXPECTED
144 );
145 }
146
147
148
149
150
151 @Test
152 void testIsNotAScreenSize3()
153 {
154 assertThrows(IndexOutOfBoundsException.class, () ->
155 {
156 ScreenSize.of(1, 8193, null);
157 }, ScreenSizeTests.INDEX_OUT_OF_BOUNDS_EXPECTED
158 );
159 }
160
161
162
163
164
165 @Test
166 void testIsNotAScreenSize4()
167 {
168 assertThrows(IndexOutOfBoundsException.class, () ->
169 {
170 ScreenSize.of(1, 0, null);
171 }, ScreenSizeTests.INDEX_OUT_OF_BOUNDS_EXPECTED
172 );
173 }
174
175
176
177
178
179 @Test
180 void testHashCode()
181 {
182 final ScreenSize size1 = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
183 final ScreenSize size2 = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
184 final ScreenSize size3 = ScreenSize.of(640, 480, ScreenSizeTests.VGA);
185 assertAll("testHashCode",
186 () -> assertEquals(size1.hashCode(), size2.hashCode(), "hashCodes are not equal"),
187 () -> assertNotEquals(size1.hashCode(), size3.hashCode(), "hashCodes are equal")
188 );
189 }
190
191
192
193
194
195 @Test
196 @SuppressWarnings(JAVA_S5785)
197 void testEquals()
198 {
199 final ScreenSize size1 = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
200 final ScreenSize size2 = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
201 final ScreenSize size3 = ScreenSize.of(640, 480, ScreenSizeTests.VGA);
202 final ScreenSize size4 = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
203 assertAll("testEquals",
204 () -> assertTrue(size1.equals(size1), "size11 is not equal"),
205 () -> assertTrue(size1.equals(size2), "size12 are not equal"),
206 () -> assertTrue(size2.equals(size1), "size21 are not equal"),
207 () -> assertTrue(size2.equals(size4), "size24 are not equal"),
208 () -> assertTrue(size1.equals(size4), "size14 are not equal"),
209 () -> assertFalse(size1.equals(size3), "size13 are equal"),
210 () -> assertFalse(size3.equals(size1), "size31 are equal"),
211 () -> assertFalse(size1.equals(null), "size10 is equal")
212 );
213 }
214
215
216
217
218
219 @Test
220 @SuppressWarnings(JAVA_S5785)
221 void testNotEquals()
222 {
223 final ScreenSize size1 = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
224 final ScreenSize size2 = ScreenSize.of(320, 241, ScreenSizeTests.QVGA);
225 assertAll("testNotEquals",
226 () -> assertFalse(size1.equals(size2), "size12 is equal")
227 );
228 }
229
230
231
232
233
234 @Test
235 void testToString()
236 {
237 final ScreenSize size = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
238 assertEquals("ScreenSize[width=320, height=240, name=QVGA]", size.toString(), "toString not equal");
239 }
240
241
242
243
244
245 @Test
246 @SuppressWarnings(JAVA_S5785)
247 void testCompareTo()
248 {
249 final ScreenSize size1 = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
250 final ScreenSize size2 = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
251 final ScreenSize size3 = ScreenSize.of(640, 480, ScreenSizeTests.VGA);
252 final ScreenSize size4 = ScreenSize.of(1280, 800, "WXGA");
253 final ScreenSize size5 = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
254 assertAll("testCompareTo",
255 () -> assertTrue(size1.compareTo(size2) == -size2.compareTo(size1), "reflexive1"),
256 () -> assertTrue(size1.compareTo(size3) == -size3.compareTo(size1), "reflexive2"),
257 () -> assertTrue((size4.compareTo(size3) > 0) && (size3.compareTo(size1) > 0) && (size4.compareTo(size1) > 0), "transitive1"),
258 () -> assertTrue((size1.compareTo(size2) == 0) && (Math.abs(size1.compareTo(size5)) == Math.abs(size2.compareTo(size5))), "sgn1"),
259 () -> assertTrue((size1.compareTo(size2) == 0) && size1.equals(size2), "equals")
260 );
261 }
262
263
264
265
266
267 @Test
268 @SuppressWarnings(JAVA_S5785)
269 void testCompareTo2()
270 {
271 final ScreenSize size1 = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
272 final ScreenSize size2 = ScreenSize.of(320, 241, ScreenSizeTests.QVGA);
273 assertAll("testCompareTo2",
274 () -> assertTrue(size1.compareTo(size2) != 0, "equal")
275 );
276 }
277
278 }