View Javadoc
1   /*
2    * Copyright (C) 2022-2023 Dipl.-Inform. Kai Hofmann. All rights reserved!
3    */
4   package de.powerstat.validation.containers.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.assertTrue;
12  
13  import org.junit.jupiter.api.Test;
14  
15  import de.powerstat.validation.containers.NTuple4;
16  import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
17  
18  
19  /**
20   * NTuple4 tests.
21   */
22  @SuppressFBWarnings({"CE_CLASS_ENVY", "RV_NEGATING_RESULT_OF_COMPARETO", "SPP_USE_ZERO_WITH_COMPARATOR", "EC_NULL_ARG"})
23  final class NTuple4Tests
24   {
25    /**
26     * Test equals constant.
27     */
28    private static final String TEST_EQUALS = "testEquals"; //$NON-NLS-1$
29  
30    /**
31     * Test compare to constant.
32     */
33    private static final String TEST_COMPARE_TO = "testCompareTo"; //$NON-NLS-1$
34  
35    /**
36     * tuple is equal constant.
37     */
38    private static final String TUPLE12_IS_EQUAL = "tuple12 is equal"; //$NON-NLS-1$
39  
40    /**
41     * tuple is equal constant.
42     */
43    private static final String TUPLE13_IS_EQUAL = "tuple13 is equal"; //$NON-NLS-1$
44  
45    /**
46     * Suppress sonarqube warning.
47     */
48    private static final String JAVA_S5785 = "java:S5785"; //$NON-NLS-1$
49  
50  
51    /**
52     * Default constructor.
53     */
54    /* default */ NTuple4Tests()
55     {
56      super();
57     }
58  
59  
60    /**
61     * Factory test.
62     */
63    @Test
64    /* default */ void testOfInt()
65     {
66      final NTuple4<Integer, Integer, Integer, Integer> tuple = NTuple4.of(Integer.valueOf(1), Integer.valueOf(4711), Integer.valueOf(815), Integer.valueOf(4));
67      assertAll("testGetValue", //$NON-NLS-1$
68        () -> assertEquals(1, tuple.t1Value().intValue(), "t1 not as expected"), //$NON-NLS-1$
69        () -> assertEquals(4711, tuple.t2Value().intValue(), "t2 not as expected"), //$NON-NLS-1$
70        () -> assertEquals(815, tuple.t3Value().intValue(), "t3 not as expected"), //$NON-NLS-1$
71        () -> assertEquals(4, tuple.t4Value().intValue(), "t4 not as expected") //$NON-NLS-1$
72      );
73     }
74  
75  
76    /**
77     * Test hash code.
78     */
79    @Test
80    /* default */ void testHashCode()
81     {
82      final NTuple4<Integer, Integer, Integer, Integer> tuple1 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(4711), Integer.valueOf(4711), Integer.valueOf(4));
83      final NTuple4<Integer, Integer, Integer, Integer> tuple2 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(4711), Integer.valueOf(4711), Integer.valueOf(4));
84      final NTuple4<Integer, Integer, Integer, Integer> tuple3 = NTuple4.of(Integer.valueOf(2), Integer.valueOf(815), Integer.valueOf(815), Integer.valueOf(4));
85      assertAll("testHashCode", //$NON-NLS-1$
86        () -> assertEquals(tuple1.hashCode(), tuple2.hashCode(), "hashCodes are not equal"), //$NON-NLS-1$
87        () -> assertNotEquals(tuple1.hashCode(), tuple3.hashCode(), "hashCodes are equal") //$NON-NLS-1$
88      );
89     }
90  
91  
92    /**
93     * Test equals.
94     */
95    @Test
96    @SuppressWarnings(JAVA_S5785)
97    /* default */ void testEquals()
98     {
99      final NTuple4<Integer, Integer, Integer, Integer> tuple1 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(4711), Integer.valueOf(4711), Integer.valueOf(4));
100     final NTuple4<Integer, Integer, Integer, Integer> tuple2 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(4711), Integer.valueOf(4711), Integer.valueOf(4));
101     final NTuple4<Integer, Integer, Integer, Integer> tuple3 = NTuple4.of(Integer.valueOf(2), Integer.valueOf(815), Integer.valueOf(815), Integer.valueOf(4));
102     final NTuple4<Integer, Integer, Integer, Integer> tuple4 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(4711), Integer.valueOf(4711), Integer.valueOf(4));
103     assertAll(NTuple4Tests.TEST_EQUALS,
104       () -> assertTrue(tuple1.equals(tuple1), "tuple11 is not equal"), //$NON-NLS-1$
105       () -> assertTrue(tuple1.equals(tuple2), "tuple12 are not equal"), //$NON-NLS-1$
106       () -> assertTrue(tuple2.equals(tuple1), "tuple21 are not equal"), //$NON-NLS-1$
107       () -> assertTrue(tuple2.equals(tuple4), "tuple24 are not equal"), //$NON-NLS-1$
108       () -> assertTrue(tuple1.equals(tuple4), "tuple14 are not equal"), //$NON-NLS-1$
109       () -> assertFalse(tuple1.equals(tuple3), "tuple13 are equal"), //$NON-NLS-1$
110       () -> assertFalse(tuple3.equals(tuple1), "tuple31 are equal"), //$NON-NLS-1$
111       () -> assertFalse(tuple1.equals(null), "tuple10 is equal") //$NON-NLS-1$
112     );
113    }
114 
115 
116   /**
117    * Test equals.
118    */
119   @Test
120   @SuppressWarnings(JAVA_S5785)
121   /* default */ void testEquals2()
122    {
123     final NTuple4<Integer, Integer, Integer, Integer> tuple1 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(1), Integer.valueOf(1), Integer.valueOf(1));
124     final NTuple4<Integer, Integer, Integer, Integer> tuple2 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(1), Integer.valueOf(1));
125     final NTuple4<Integer, Integer, Integer, Integer> tuple3 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(1));
126     assertAll(NTuple4Tests.TEST_EQUALS,
127       () -> assertFalse(tuple1.equals(tuple2), NTuple4Tests.TUPLE12_IS_EQUAL),
128       () -> assertFalse(tuple1.equals(tuple3), NTuple4Tests.TUPLE13_IS_EQUAL)
129     );
130    }
131 
132 
133   /**
134    * Test toString.
135    */
136   @Test
137   /* default */ void testToString()
138    {
139     final NTuple4<Integer, Integer, Integer, Integer> tuple1 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(4711), Integer.valueOf(815), Integer.valueOf(4));
140     assertEquals("NTuple4[object1=1, object2=4711, object3=815, object4=4]", tuple1.toString(), "toString not equal"); //$NON-NLS-1$ //$NON-NLS-2$
141    }
142 
143 
144   /**
145    * Test compareTo.
146    */
147   @Test
148   @SuppressWarnings(JAVA_S5785)
149   /* default */ void testCompareTo()
150    {
151     final NTuple4<Integer, Integer, Integer, Integer> tuple1 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(4711), Integer.valueOf(4711), Integer.valueOf(4));
152     final NTuple4<Integer, Integer, Integer, Integer> tuple2 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(4711), Integer.valueOf(4711), Integer.valueOf(4));
153     final NTuple4<Integer, Integer, Integer, Integer> tuple3 = NTuple4.of(Integer.valueOf(2), Integer.valueOf(815), Integer.valueOf(815), Integer.valueOf(4));
154     final NTuple4<Integer, Integer, Integer, Integer> tuple4 = NTuple4.of(Integer.valueOf(3), Integer.valueOf(20221127), Integer.valueOf(20221127), Integer.valueOf(4));
155     final NTuple4<Integer, Integer, Integer, Integer> tuple5 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(4711), Integer.valueOf(4711), Integer.valueOf(4));
156     assertAll(NTuple4Tests.TEST_COMPARE_TO,
157       () -> assertTrue(tuple1.compareTo(tuple2) == -tuple2.compareTo(tuple1), "reflexive1"), //$NON-NLS-1$
158       () -> assertTrue(tuple1.compareTo(tuple3) == -tuple3.compareTo(tuple1), "reflexive2"), //$NON-NLS-1$
159       () -> assertTrue((tuple4.compareTo(tuple3) > 0) && (tuple3.compareTo(tuple1) > 0) && (tuple4.compareTo(tuple1) > 0), "transitive1"), //$NON-NLS-1$
160       () -> assertTrue((tuple1.compareTo(tuple2) == 0) && (Math.abs(tuple1.compareTo(tuple5)) == Math.abs(tuple2.compareTo(tuple5))), "sgn1"), //$NON-NLS-1$
161       () -> assertTrue((tuple1.compareTo(tuple2) == 0) && tuple1.equals(tuple2), "equals") //$NON-NLS-1$
162     );
163    }
164 
165 
166   /**
167    * Test compareTo.
168    */
169   @Test
170   @SuppressWarnings(JAVA_S5785)
171   /* default */ void testCompareTo2()
172    {
173     final NTuple4<Integer, Integer, Integer, Integer> tuple1 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(1), Integer.valueOf(1), Integer.valueOf(1));
174     final NTuple4<Integer, Integer, Integer, Integer> tuple2 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(1), Integer.valueOf(1));
175     final NTuple4<Integer, Integer, Integer, Integer> tuple3 = NTuple4.of(Integer.valueOf(1), Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(1));
176     assertAll(NTuple4Tests.TEST_COMPARE_TO,
177       () -> assertTrue(tuple1.compareTo(tuple2) != 0, NTuple4Tests.TUPLE12_IS_EQUAL),
178       () -> assertTrue(tuple1.compareTo(tuple3) != 0, NTuple4Tests.TUPLE13_IS_EQUAL)
179     );
180    }
181 
182  }