View Javadoc
1   /*
2    * Copyright (C) 2022-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.Lastname;
19  import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
20  
21  
22  /**
23   * Lastname 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 LastnameTests
27   {
28    /**
29     * Lastname.
30     */
31    private static final String LASTNAME = "lastname"; //$NON-NLS-1$
32  
33    /**
34     * Lastname z.
35     */
36    private static final String LASTNAMEZ = "lastnamez"; //$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     * Lastname not as expected constant.
45     */
46    private static final String LASTNAME_NOT_AS_EXPECTED = "Lastname not as expected"; //$NON-NLS-1$
47  
48  
49    /**
50     * Default constructor.
51     */
52    /* default */ LastnameTests()
53     {
54      super();
55     }
56  
57  
58    /**
59     * Test Lastname with valid values.
60     *
61     * @param lastname Lastname
62     */
63    @ParameterizedTest
64    @ValueSource(strings = {"H", "Hofmann", LastnameTests.LASTNAME, "AbcdefghijklmnopqrstuvwxyzäöüßABCDEFGHIJ"})
65    /* default */ void testLastnameOk0(final String lastname)
66     {
67      final Lastname cleanLastname = Lastname.of(lastname);
68      assertEquals(lastname, cleanLastname.stringValue(), LastnameTests.LASTNAME_NOT_AS_EXPECTED);
69     }
70  
71  
72    /**
73     * Test Lastname with lastname to short or long.
74     *
75     * @param lastname Lastname
76     */
77    @ParameterizedTest
78    @ValueSource(strings = {"", "AbcdefghijklmnopqrstuvwxyzäöüßABCDEFGHIJK"})
79    /* default */ void testLastnameLength(final String lastname)
80     {
81      assertThrows(IllegalArgumentException.class, () ->
82       {
83        /* final Lastname cleanLastname = */ Lastname.of(lastname);
84       }, LastnameTests.ILLEGAL_ARGUMENT
85      );
86     }
87  
88  
89    /**
90     * Test Lastname with illegal characters.
91     */
92    @Test
93    /* default */ void testLastnameWithIllegalCharacters0()
94     {
95      assertThrows(IllegalArgumentException.class, () ->
96       {
97        /* final Lastname cleanLastname = */ Lastname.of("^!$%&(){}[]=?+*#´§;,:'\""); //$NON-NLS-1$
98       }, LastnameTests.ILLEGAL_ARGUMENT
99      );
100    }
101 
102 
103   /**
104    * Test get lastname.
105    */
106   @Test
107   /* default */ void testStringValue()
108    {
109     final Lastname lastname = Lastname.of(LastnameTests.LASTNAME);
110     assertEquals(LastnameTests.LASTNAME, lastname.stringValue(), LastnameTests.LASTNAME_NOT_AS_EXPECTED);
111    }
112 
113 
114   /**
115    * Test hash code.
116    */
117   @Test
118   /* default */ void testHashCode()
119    {
120     final Lastname lastname1 = Lastname.of(LastnameTests.LASTNAME);
121     final Lastname lastname2 = Lastname.of(LastnameTests.LASTNAME);
122     final Lastname lastname3 = Lastname.of(LastnameTests.LASTNAMEZ);
123     assertAll("testHashCode", //$NON-NLS-1$
124       () -> assertEquals(lastname1.hashCode(), lastname2.hashCode(), "hashCodes are not equal"), //$NON-NLS-1$
125       () -> assertNotEquals(lastname1.hashCode(), lastname3.hashCode(), "hashCodes are equal") //$NON-NLS-1$
126     );
127    }
128 
129 
130   /**
131    * Test equals.
132    */
133   @Test
134   @SuppressWarnings("java:S5785")
135   /* default */ void testEquals()
136    {
137     final Lastname lastname1 = Lastname.of(LastnameTests.LASTNAME);
138     final Lastname lastname2 = Lastname.of(LastnameTests.LASTNAME);
139     final Lastname lastname3 = Lastname.of(LastnameTests.LASTNAMEZ);
140     final Lastname lastname4 = Lastname.of(LastnameTests.LASTNAME);
141     assertAll("testEquals", //$NON-NLS-1$
142       () -> assertTrue(lastname1.equals(lastname1), "lastname11 is not equal"), //$NON-NLS-1$
143       () -> assertTrue(lastname1.equals(lastname2), "lastname12 are not equal"), //$NON-NLS-1$
144       () -> assertTrue(lastname2.equals(lastname1), "lastname21 are not equal"), //$NON-NLS-1$
145       () -> assertTrue(lastname2.equals(lastname4), "lastname24 are not equal"), //$NON-NLS-1$
146       () -> assertTrue(lastname1.equals(lastname4), "lastname14 are not equal"), //$NON-NLS-1$
147       () -> assertFalse(lastname1.equals(lastname3), "lastname13 are equal"), //$NON-NLS-1$
148       () -> assertFalse(lastname3.equals(lastname1), "lastname31 are equal"), //$NON-NLS-1$
149       () -> assertFalse(lastname1.equals(null), "lastname10 is equal") //$NON-NLS-1$
150     );
151    }
152 
153 
154   /**
155    * Test toString.
156    */
157   @Test
158   /* default */ void testToString()
159    {
160     final Lastname lastname = Lastname.of(LastnameTests.LASTNAME);
161     assertEquals("Lastname[lastname=lastname]", lastname.toString(), "toString not equal"); //$NON-NLS-1$ //$NON-NLS-2$
162    }
163 
164 
165   /**
166    * Test compareTo.
167    */
168   @Test
169   @SuppressWarnings("java:S5785")
170   /* default */ void testCompareTo()
171    {
172     final Lastname lastname1 = Lastname.of(LastnameTests.LASTNAME);
173     final Lastname lastname2 = Lastname.of(LastnameTests.LASTNAME);
174     final Lastname lastname3 = Lastname.of("lastnamey"); //$NON-NLS-1$
175     final Lastname lastname4 = Lastname.of(LastnameTests.LASTNAMEZ);
176     final Lastname lastname5 = Lastname.of(LastnameTests.LASTNAME);
177     assertAll("testCompareTo", //$NON-NLS-1$
178       () -> assertTrue(lastname1.compareTo(lastname2) == -lastname2.compareTo(lastname1), "reflexive1"), //$NON-NLS-1$
179       () -> assertTrue(lastname1.compareTo(lastname3) == -lastname3.compareTo(lastname1), "reflexive2"), //$NON-NLS-1$
180       () -> assertTrue((lastname4.compareTo(lastname3) > 0) && (lastname3.compareTo(lastname1) > 0) && (lastname4.compareTo(lastname1) > 0), "transitive1"), //$NON-NLS-1$
181       () -> assertTrue((lastname1.compareTo(lastname2) == 0) && (Math.abs(lastname1.compareTo(lastname5)) == Math.abs(lastname2.compareTo(lastname5))), "sgn1"), //$NON-NLS-1$
182       () -> assertTrue((lastname1.compareTo(lastname2) == 0) && lastname1.equals(lastname2), "equals") //$NON-NLS-1$
183     );
184    }
185 
186  }