View Javadoc
1   /*
2    * Copyright (C) 2020-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  import org.junit.jupiter.params.ParameterizedTest;
16  import org.junit.jupiter.params.provider.ValueSource;
17  
18  import de.powerstat.validation.values.SubBuilding;
19  import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
20  
21  
22  /**
23   * Sub building tests.
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 SubBuildingTests
27   {
28    /**
29     * Floor 13 apartment 0815.
30     */
31    private static final String FLOOR_13_APART_0815 = "Floor 13, Apart. 0815"; //$NON-NLS-1$
32  
33    /**
34     * Floor 99.
35     */
36    private static final String FLOOR_99 = "Floor 99"; //$NON-NLS-1$
37  
38    /**
39     * Illegal argument exception expected constant.
40     */
41    private static final String ILLEGAL_ARGUMENT = "Illegal argument exception expected"; //$NON-NLS-1$
42  
43    /**
44     * SubBuilding not as expected constant.
45     */
46    private static final String SUB_BUILDING_NOT_AS_EXPECTED = "SubBuilding not as expected"; //$NON-NLS-1$
47  
48  
49    /**
50     * Default constructor.
51     */
52    /* default */ SubBuildingTests()
53     {
54      super();
55     }
56  
57  
58    /**
59     * Test correct SubBuilding.
60     *
61     * @param subBuilding Sub building
62     */
63    @ParameterizedTest
64    @ValueSource(strings = {SubBuildingTests.FLOOR_13_APART_0815, "A", "Abcdefghijklmnopqrstuvwxyzabcdef"})
65    /* default */ void testSubBuildingCorrect(final String subBuilding)
66     {
67      final SubBuilding cleanSubBuilding = SubBuilding.of(subBuilding);
68      assertEquals(subBuilding, cleanSubBuilding.stringValue(), SubBuildingTests.SUB_BUILDING_NOT_AS_EXPECTED);
69     }
70  
71  
72    /**
73     * Test SubBuilding with wrong lengths.
74     *
75     * @param subBuilding Sub building
76     */
77    @ParameterizedTest
78    @ValueSource(strings = {"", "Abcdefghijklmnopqrstuvwxyzabcdefg"})
79    /* default */ void testSubBuildingLength(final String subBuilding)
80     {
81      assertThrows(IllegalArgumentException.class, () ->
82       {
83        /* final SubBuilding cleanSubBuilding = */ SubBuilding.of(subBuilding);
84       }, SubBuildingTests.ILLEGAL_ARGUMENT
85      );
86     }
87  
88  
89    /**
90     * Test wrong SubBuilding.
91     *
92     * @param subBuilding Sub building
93     */
94    @ParameterizedTest
95    @ValueSource(strings = {"abc_def"})
96    /* default */ void testSubBuildingWrong(final String subBuilding)
97     {
98      assertThrows(IllegalArgumentException.class, () ->
99       {
100       /* final SubBuilding cleanSubBuilding = */ SubBuilding.of(subBuilding);
101      }, SubBuildingTests.ILLEGAL_ARGUMENT
102     );
103    }
104 
105 
106   /**
107    * Test get subBuilding.
108    */
109   @Test
110   /* default */ void testStringValue()
111    {
112     final SubBuilding subBuilding = SubBuilding.of(SubBuildingTests.FLOOR_13_APART_0815);
113     assertEquals(SubBuildingTests.FLOOR_13_APART_0815, subBuilding.stringValue(), SubBuildingTests.SUB_BUILDING_NOT_AS_EXPECTED);
114    }
115 
116 
117   /**
118    * Test hash code.
119    */
120   @Test
121   /* default */ void testHashCode()
122    {
123     final SubBuilding subBuilding1 = SubBuilding.of(SubBuildingTests.FLOOR_13_APART_0815);
124     final SubBuilding subBuilding2 = SubBuilding.of(SubBuildingTests.FLOOR_13_APART_0815);
125     final SubBuilding subBuilding3 = SubBuilding.of(SubBuildingTests.FLOOR_99);
126     assertAll("testHashCode", //$NON-NLS-1$
127       () -> assertEquals(subBuilding1.hashCode(), subBuilding2.hashCode(), "hashCodes are not equal"), //$NON-NLS-1$
128       () -> assertNotEquals(subBuilding1.hashCode(), subBuilding3.hashCode(), "hashCodes are equal") //$NON-NLS-1$
129     );
130    }
131 
132 
133   /**
134    * Test equals.
135    */
136   @Test
137   @SuppressWarnings("java:S5785")
138   /* default */ void testEquals()
139    {
140     final SubBuilding subBuilding1 = SubBuilding.of(SubBuildingTests.FLOOR_13_APART_0815);
141     final SubBuilding subBuilding2 = SubBuilding.of(SubBuildingTests.FLOOR_13_APART_0815);
142     final SubBuilding subBuilding3 = SubBuilding.of(SubBuildingTests.FLOOR_99);
143     final SubBuilding subBuilding4 = SubBuilding.of(SubBuildingTests.FLOOR_13_APART_0815);
144     assertAll("testEquals", //$NON-NLS-1$
145       () -> assertTrue(subBuilding1.equals(subBuilding1), "subBulding11 is not equal"), //$NON-NLS-1$
146       () -> assertTrue(subBuilding1.equals(subBuilding2), "subBulding12 are not equal"), //$NON-NLS-1$
147       () -> assertTrue(subBuilding2.equals(subBuilding1), "subBulding21 are not equal"), //$NON-NLS-1$
148       () -> assertTrue(subBuilding2.equals(subBuilding4), "subBulding24 are not equal"), //$NON-NLS-1$
149       () -> assertTrue(subBuilding1.equals(subBuilding4), "subBulding14 are not equal"), //$NON-NLS-1$
150       () -> assertFalse(subBuilding1.equals(subBuilding3), "subBulding13 are equal"), //$NON-NLS-1$
151       () -> assertFalse(subBuilding3.equals(subBuilding1), "subBulding31 are equal"), //$NON-NLS-1$
152       () -> assertFalse(subBuilding1.equals(null), "subBulding10 is equal") //$NON-NLS-1$
153     );
154    }
155 
156 
157   /**
158    * Test toString.
159    */
160   @Test
161   /* default */ void testToString()
162    {
163     final SubBuilding subBuilding = SubBuilding.of(SubBuildingTests.FLOOR_13_APART_0815);
164     assertEquals("SubBuilding[subBuilding=Floor 13, Apart. 0815]", subBuilding.toString(), "toString not equal"); //$NON-NLS-1$ //$NON-NLS-2$
165    }
166 
167 
168   /**
169    * Test compareTo.
170    */
171   @Test
172   @SuppressWarnings("java:S5785")
173   /* default */ void testCompareTo()
174    {
175     final SubBuilding subBuilding1 = SubBuilding.of(SubBuildingTests.FLOOR_13_APART_0815);
176     final SubBuilding subBuilding2 = SubBuilding.of(SubBuildingTests.FLOOR_13_APART_0815);
177     final SubBuilding subBuilding3 = SubBuilding.of(SubBuildingTests.FLOOR_99);
178     final SubBuilding subBuilding4 = SubBuilding.of("Floor XIII"); //$NON-NLS-1$
179     final SubBuilding subBuilding5 = SubBuilding.of(SubBuildingTests.FLOOR_13_APART_0815);
180     assertAll("testCompareTo", //$NON-NLS-1$
181       () -> assertTrue(subBuilding1.compareTo(subBuilding2) == -subBuilding2.compareTo(subBuilding1), "reflexive1"), //$NON-NLS-1$
182       () -> assertTrue(subBuilding1.compareTo(subBuilding3) == -subBuilding3.compareTo(subBuilding1), "reflexive2"), //$NON-NLS-1$
183       () -> assertTrue((subBuilding4.compareTo(subBuilding3) > 0) && (subBuilding3.compareTo(subBuilding1) > 0) && (subBuilding4.compareTo(subBuilding1) > 0), "transitive1"), //$NON-NLS-1$
184       () -> assertTrue((subBuilding1.compareTo(subBuilding2) == 0) && (Math.abs(subBuilding1.compareTo(subBuilding5)) == Math.abs(subBuilding2.compareTo(subBuilding5))), "sgn1"), //$NON-NLS-1$
185       () -> assertTrue((subBuilding1.compareTo(subBuilding2) == 0) && subBuilding1.equals(subBuilding2), "equals") //$NON-NLS-1$
186     );
187    }
188 
189  }