@@ -43,17 +43,17 @@ void shouldHaveValidEnumExtensionExample() {
4343 }
4444
4545 /**
46- * Test the Javadoc on {@link EnumUtils#asEnumType }.
46+ * Test the Javadoc on {@link EnumUtils#getAssociatedEnumType }.
4747 */
4848 @ Test
49- void shouldHaveValidJavadocExampleOnAsEnumType () {
49+ void shouldHaveValidJavadocExampleOnGetAssociatedEnumType () {
5050 Class <?> class1 = NumericShaper .Range .class ;
5151 Class <?> class2 = NumericShaper .Range .ETHIOPIC .getClass (); // NumericShaper$Range$1.class
5252
53- Optional <Class <? extends Enum <?>>> r1 = EnumUtils .asEnumType (class1 ); // = Optional.of(NumericShaper.Range.class)
54- Optional <Class <? extends Enum <?>>> r2 = EnumUtils .asEnumType (class2 ); // = Optional.of(NumericShaper.Range.class)
55- Optional <Class <? extends Enum <?>>> r3 = EnumUtils .asEnumType (null );// = Optional.empty()
56- Optional <Class <? extends Enum <?>>> r4 = EnumUtils .asEnumType (int .class );// = Optional.empty()
53+ Optional <Class <? extends Enum <?>>> r1 = EnumUtils .getAssociatedEnumType (class1 ); // = Optional.of(NumericShaper.Range.class)
54+ Optional <Class <? extends Enum <?>>> r2 = EnumUtils .getAssociatedEnumType (class2 ); // = Optional.of(NumericShaper.Range.class)
55+ Optional <Class <? extends Enum <?>>> r3 = EnumUtils .getAssociatedEnumType (null ); // = Optional.empty()
56+ Optional <Class <? extends Enum <?>>> r4 = EnumUtils .getAssociatedEnumType (int .class );// = Optional.empty()
5757
5858 assertThat (r1 , equalTo (Optional .of (NumericShaper .Range .class )));
5959 assertThat (r2 , equalTo (Optional .of (NumericShaper .Range .class )));
@@ -80,6 +80,31 @@ void shouldTryToResolveNameToEntry() {
8080 assertThat (EnumUtils .tryValueOf (TimeUnit .class , "WRONG" ), equalTo (Optional .empty ()));
8181 }
8282
83+ @ Test
84+ void shouldTryToResolveNameToEntryCaseInsensitively () {
85+ // given / when / then
86+ assertThat (EnumUtils .tryValueOfCaseInsensitive (TestEnum .class , "FIRST" ), equalTo (Optional .of (TestEnum .FIRST )));
87+ assertThat (EnumUtils .tryValueOfCaseInsensitive (TestEnum .class , "Second" ), equalTo (Optional .of (TestEnum .SECOND )));
88+ assertThat (EnumUtils .tryValueOfCaseInsensitive (TestEnum .class , "third" ), equalTo (Optional .of (TestEnum .THIRD )));
89+ assertThat (EnumUtils .tryValueOfCaseInsensitive (TimeUnit .class , "MINUTES" ), equalTo (Optional .of (TimeUnit .MINUTES )));
90+ assertThat (EnumUtils .tryValueOfCaseInsensitive (TestEnum .NestedEnum .class , "SECOND" ), equalTo (Optional .of (TestEnum .NestedEnum .SECOND )));
91+
92+ assertThat (EnumUtils .tryValueOfCaseInsensitive (EnumWithNonStandardEntryNames .class , "FIRST" ), equalTo (Optional .of (EnumWithNonStandardEntryNames .first )));
93+ assertThat (EnumUtils .tryValueOfCaseInsensitive (EnumWithNonStandardEntryNames .class , "second" ), equalTo (Optional .of (EnumWithNonStandardEntryNames .Second )));
94+ assertThat (EnumUtils .tryValueOfCaseInsensitive (EnumWithNonStandardEntryNames .class , "third" ), equalTo (Optional .of (EnumWithNonStandardEntryNames .Third )));
95+ assertThat (EnumUtils .tryValueOfCaseInsensitive (EnumWithNonStandardEntryNames .class , "tHird" ), equalTo (Optional .of (EnumWithNonStandardEntryNames .Third )));
96+ assertThat (EnumUtils .tryValueOfCaseInsensitive (EnumWithNonStandardEntryNames .class , "other" ), equalTo (Optional .empty ()));
97+
98+ assertThat (EnumUtils .tryValueOfCaseInsensitive (null , null ), equalTo (Optional .empty ()));
99+ assertThat (EnumUtils .tryValueOfCaseInsensitive (TestEnum .class , null ), equalTo (Optional .empty ()));
100+ assertThat (EnumUtils .tryValueOfCaseInsensitive (null , "ENTRY" ), equalTo (Optional .empty ()));
101+
102+ assertThat (EnumUtils .tryValueOfCaseInsensitive (TestEnum .class , "WRONG" ), equalTo (Optional .empty ()));
103+ assertThat (EnumUtils .tryValueOfCaseInsensitive (TestEnum .NestedEnum .class , "WRONG" ), equalTo (Optional .empty ()));
104+ assertThat (EnumUtils .tryValueOfCaseInsensitive (HashMap .class , "wrong" ), equalTo (Optional .empty ()));
105+ assertThat (EnumUtils .tryValueOfCaseInsensitive (TimeUnit .class , "WRONG" ), equalTo (Optional .empty ()));
106+ }
107+
83108 @ Test
84109 void shouldDefineWhetherIsEnumRelatedClass () {
85110 // given / when / then
@@ -97,7 +122,7 @@ void shouldDefineWhetherIsEnumRelatedClass() {
97122 }
98123
99124 @ Test
100- void shouldReturnEnumClassIfApplicable () {
125+ void shouldCastClassAsEnumExtensionIfApplicable () {
101126 // given
102127 Class <?> clazz1 = TestEnum .class ;
103128 Class <?> clazz2 = TestEnum .SECOND .getClass ();
@@ -107,12 +132,44 @@ void shouldReturnEnumClassIfApplicable() {
107132 Class <?> clazz6 = TestEnum .NestedEnum .SECOND .getClass ();
108133
109134 // when
110- Optional <Class <? extends Enum <?>>> result1 = EnumUtils .asEnumType (clazz1 );
111- Optional <Class <? extends Enum <?>>> result2 = EnumUtils .asEnumType (clazz2 );
112- Optional <Class <? extends Enum <?>>> result3 = EnumUtils .asEnumType (clazz3 );
113- Optional <Class <? extends Enum <?>>> result4 = EnumUtils .asEnumType (clazz4 );
114- Optional <Class <? extends Enum <?>>> result5 = EnumUtils .asEnumType (clazz5 );
115- Optional <Class <? extends Enum <?>>> result6 = EnumUtils .asEnumType (clazz6 );
135+ Optional <Class <? extends Enum <?>>> result1 = EnumUtils .asEnumClassIfPossible (clazz1 );
136+ Optional <Class <? extends Enum <?>>> result2 = EnumUtils .asEnumClassIfPossible (clazz2 );
137+ Optional <Class <? extends Enum <?>>> result3 = EnumUtils .asEnumClassIfPossible (clazz3 );
138+ Optional <Class <? extends Enum <?>>> result4 = EnumUtils .asEnumClassIfPossible (clazz4 );
139+ Optional <Class <? extends Enum <?>>> result5 = EnumUtils .asEnumClassIfPossible (clazz5 );
140+ Optional <Class <? extends Enum <?>>> result6 = EnumUtils .asEnumClassIfPossible (clazz6 );
141+
142+ // then
143+ assertThat (result1 , equalTo (Optional .of (TestEnum .class )));
144+ assertThat (result2 , equalTo (Optional .empty ()));
145+ assertThat (result3 , equalTo (Optional .empty ()));
146+ assertThat (result4 , equalTo (Optional .empty ()));
147+ assertThat (result5 , equalTo (Optional .of (TestEnum .NestedEnum .class )));
148+ assertThat (result6 , equalTo (Optional .empty ()));
149+
150+ assertThat (EnumUtils .getAssociatedEnumType (null ), equalTo (Optional .empty ()));
151+ assertThat (EnumUtils .getAssociatedEnumType (String .class ), equalTo (Optional .empty ()));
152+ assertThat (EnumUtils .getAssociatedEnumType (double [][].class ), equalTo (Optional .empty ()));
153+ assertThat (EnumUtils .getAssociatedEnumType (List .class ), equalTo (Optional .empty ()));
154+ }
155+
156+ @ Test
157+ void shouldReturnAssociatedEnumClassIfApplicable () {
158+ // given
159+ Class <?> clazz1 = TestEnum .class ;
160+ Class <?> clazz2 = TestEnum .SECOND .getClass ();
161+ Class <?> clazz3 = TestEnum .Inner .class ;
162+ Class <?> clazz4 = TestEnum .SECOND .getClass ().getDeclaredClasses ()[0 ];
163+ Class <?> clazz5 = TestEnum .NestedEnum .class ;
164+ Class <?> clazz6 = TestEnum .NestedEnum .SECOND .getClass ();
165+
166+ // when
167+ Optional <Class <? extends Enum <?>>> result1 = EnumUtils .getAssociatedEnumType (clazz1 );
168+ Optional <Class <? extends Enum <?>>> result2 = EnumUtils .getAssociatedEnumType (clazz2 );
169+ Optional <Class <? extends Enum <?>>> result3 = EnumUtils .getAssociatedEnumType (clazz3 );
170+ Optional <Class <? extends Enum <?>>> result4 = EnumUtils .getAssociatedEnumType (clazz4 );
171+ Optional <Class <? extends Enum <?>>> result5 = EnumUtils .getAssociatedEnumType (clazz5 );
172+ Optional <Class <? extends Enum <?>>> result6 = EnumUtils .getAssociatedEnumType (clazz6 );
116173
117174 // then
118175 assertThat (result1 , equalTo (Optional .of (TestEnum .class )));
@@ -122,10 +179,10 @@ void shouldReturnEnumClassIfApplicable() {
122179 assertThat (result5 , equalTo (Optional .of (TestEnum .NestedEnum .class )));
123180 assertThat (result6 , equalTo (Optional .of (TestEnum .NestedEnum .class )));
124181
125- assertThat (EnumUtils .asEnumType (null ), equalTo (Optional .empty ()));
126- assertThat (EnumUtils .asEnumType (String .class ), equalTo (Optional .empty ()));
127- assertThat (EnumUtils .asEnumType (double [][].class ), equalTo (Optional .empty ()));
128- assertThat (EnumUtils .asEnumType (List .class ), equalTo (Optional .empty ()));
182+ assertThat (EnumUtils .getAssociatedEnumType (null ), equalTo (Optional .empty ()));
183+ assertThat (EnumUtils .getAssociatedEnumType (String .class ), equalTo (Optional .empty ()));
184+ assertThat (EnumUtils .getAssociatedEnumType (double [][].class ), equalTo (Optional .empty ()));
185+ assertThat (EnumUtils .getAssociatedEnumType (List .class ), equalTo (Optional .empty ()));
129186 }
130187
131188 @ Test
@@ -162,7 +219,8 @@ private enum NestedEnum {
162219
163220 FIRST ,
164221
165- SECOND ()
222+ SECOND () {
223+ }
166224
167225 }
168226
@@ -173,4 +231,12 @@ static class Inner2d {
173231 }
174232 }
175233 }
234+
235+ private enum EnumWithNonStandardEntryNames {
236+
237+ first ,
238+ Second ,
239+ Third , // 1
240+ tHird // 2
241+ }
176242}
0 commit comments