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