View Javadoc
1   /*
2    * Copyright (C) 2021-2023 Dipl.-Inform. Kai Hofmann. All rights reserved!
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   * Screen size tests.
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     * QVGA.
28     */
29    private static final String QVGA = "QVGA"; //$NON-NLS-1$
30  
31    /**
32     * 320x240.
33     */
34    private static final String QVGA320X240 = "320x240"; //$NON-NLS-1$
35  
36    /**
37     * VGA.
38     */
39    private static final String VGA = "VGA"; //$NON-NLS-1$
40  
41    /**
42     * Size is not equal constant.
43     */
44    private static final String SIZE_IS_NOT_EQUAL = "Size is not equal"; //$NON-NLS-1$
45  
46    /**
47     * Index out of bounds exception expected constant.
48     */
49    private static final String INDEX_OUT_OF_BOUNDS_EXPECTED = "Index out of bounds exception expected"; //$NON-NLS-1$
50  
51    /**
52     * Width is not equal constant.
53     */
54    private static final String WIDTH_IS_NOT_EQUAL = "width is not equal"; //$NON-NLS-1$
55  
56    /**
57     * Height is not equal constant.
58     */
59    private static final String HEIGHT_IS_NOT_EQUAL = "height is not equal"; //$NON-NLS-1$
60  
61    /**
62     * Suppress sonarqube warning.
63     */
64    private static final String JAVA_S5785 = "java:S5785"; //$NON-NLS-1$
65  
66  
67    /**
68     * Default constructor.
69     */
70    /* default */ ScreenSizeTests()
71     {
72      super();
73     }
74  
75  
76    /**
77     * Factory string test.
78     */
79    @Test
80    /* default */ void testFactory1()
81     {
82      final ScreenSize size = ScreenSize.of(QVGA320X240);
83      assertAll("factory1", //$NON-NLS-1$
84        () -> assertEquals(320, size.getWidth(), WIDTH_IS_NOT_EQUAL),
85        () -> assertEquals(240, size.getHeight(), HEIGHT_IS_NOT_EQUAL)
86      );
87     }
88  
89  
90    /**
91     * Factory string test.
92     */
93    @Test
94    /* default */ void testFactory2()
95     {
96      assertThrows(IllegalArgumentException.class, () ->
97       {
98        /* final ScreenSize size = */ ScreenSize.of("320");
99       }, "Illegal argument exception"
100     );
101    }
102 
103 
104   /**
105    * Is screen size.
106    */
107   @Test
108   /* default */ void testIsScreenSize()
109    {
110     final ScreenSize size = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
111     assertAll("testScreenSize", //$NON-NLS-1$
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") //$NON-NLS-1$
116     );
117    }
118 
119 
120   /**
121    * Is not a screen size.
122    */
123   @Test
124   /* default */ void testIsNotAScreenSize1()
125    {
126     assertThrows(IndexOutOfBoundsException.class, () ->
127      {
128       /* final ScreenSize size = */ ScreenSize.of(0, 0, null);
129      }, ScreenSizeTests.INDEX_OUT_OF_BOUNDS_EXPECTED
130     );
131    }
132 
133 
134   /**
135    * Is not a screen size.
136    */
137   @Test
138   /* default */ void testIsNotAScreenSize2()
139    {
140     assertThrows(IndexOutOfBoundsException.class, () ->
141      {
142       /* final ScreenSize size = */ ScreenSize.of(8193, 0, null);
143      }, ScreenSizeTests.INDEX_OUT_OF_BOUNDS_EXPECTED
144     );
145    }
146 
147 
148   /**
149    * Is not a screen size.
150    */
151   @Test
152   /* default */ void testIsNotAScreenSize3()
153    {
154     assertThrows(IndexOutOfBoundsException.class, () ->
155      {
156       /* final ScreenSize size = */ ScreenSize.of(1, 8193, null);
157      }, ScreenSizeTests.INDEX_OUT_OF_BOUNDS_EXPECTED
158     );
159    }
160 
161 
162   /**
163    * Is not a screen size.
164    */
165   @Test
166   /* default */ void testIsNotAScreenSize4()
167    {
168     assertThrows(IndexOutOfBoundsException.class, () ->
169      {
170       /* final ScreenSize size = */ ScreenSize.of(1, 0, null);
171      }, ScreenSizeTests.INDEX_OUT_OF_BOUNDS_EXPECTED
172     );
173    }
174 
175 
176   /**
177    * Test hash code.
178    */
179   @Test
180   /* default */ 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", //$NON-NLS-1$
186       () -> assertEquals(size1.hashCode(), size2.hashCode(), "hashCodes are not equal"), //$NON-NLS-1$
187       () -> assertNotEquals(size1.hashCode(), size3.hashCode(), "hashCodes are equal") //$NON-NLS-1$
188     );
189    }
190 
191 
192   /**
193    * Test equals.
194    */
195   @Test
196   @SuppressWarnings(JAVA_S5785)
197   /* default */ 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", //$NON-NLS-1$
204       () -> assertTrue(size1.equals(size1), "size11 is not equal"), //$NON-NLS-1$
205       () -> assertTrue(size1.equals(size2), "size12 are not equal"), //$NON-NLS-1$
206       () -> assertTrue(size2.equals(size1), "size21 are not equal"), //$NON-NLS-1$
207       () -> assertTrue(size2.equals(size4), "size24 are not equal"), //$NON-NLS-1$
208       () -> assertTrue(size1.equals(size4), "size14 are not equal"), //$NON-NLS-1$
209       () -> assertFalse(size1.equals(size3), "size13 are equal"), //$NON-NLS-1$
210       () -> assertFalse(size3.equals(size1), "size31 are equal"), //$NON-NLS-1$
211       () -> assertFalse(size1.equals(null), "size10 is equal") //$NON-NLS-1$
212     );
213    }
214 
215 
216   /**
217    * Test not equals.
218    */
219   @Test
220   @SuppressWarnings(JAVA_S5785)
221   /* default */ 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", //$NON-NLS-1$
226       () -> assertFalse(size1.equals(size2), "size12 is equal") //$NON-NLS-1$
227     );
228    }
229 
230 
231   /**
232    * Test toString.
233    */
234   @Test
235   /* default */ 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"); //$NON-NLS-1$ //$NON-NLS-2$
239    }
240 
241 
242   /**
243    * Test compareTo.
244    */
245   @Test
246   @SuppressWarnings(JAVA_S5785)
247   /* default */ 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"); //$NON-NLS-1$
253     final ScreenSize size5 = ScreenSize.of(320, 240, ScreenSizeTests.QVGA);
254     assertAll("testCompareTo", //$NON-NLS-1$
255       () -> assertTrue(size1.compareTo(size2) == -size2.compareTo(size1), "reflexive1"), //$NON-NLS-1$
256       () -> assertTrue(size1.compareTo(size3) == -size3.compareTo(size1), "reflexive2"), //$NON-NLS-1$
257       () -> assertTrue((size4.compareTo(size3) > 0) && (size3.compareTo(size1) > 0) && (size4.compareTo(size1) > 0), "transitive1"), //$NON-NLS-1$
258       () -> assertTrue((size1.compareTo(size2) == 0) && (Math.abs(size1.compareTo(size5)) == Math.abs(size2.compareTo(size5))), "sgn1"), //$NON-NLS-1$
259       () -> assertTrue((size1.compareTo(size2) == 0) && size1.equals(size2), "equals") //$NON-NLS-1$
260     );
261    }
262 
263 
264   /**
265    * Test compareTo2.
266    */
267   @Test
268   @SuppressWarnings(JAVA_S5785)
269   /* default */ 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", //$NON-NLS-1$
274       () -> assertTrue(size1.compareTo(size2) != 0, "equal") //$NON-NLS-1$
275     );
276    }
277 
278  }