Skip to content

Commit ea3413e

Browse files
authored
Merge pull request #621 from MelleD/bugfix_Enum-Generator-produces-snake_case-enums-instead-of-UPPERCASE
Fix no conversion of uppercase strings
2 parents fb75779 + e22f822 commit ea3413e

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

core/esmf-aspect-model-java-generator/src/main/java/org/eclipse/esmf/aspectmodel/java/AspectModelJavaUtil.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -344,11 +344,18 @@ public static Class<?> getDataTypeClass( final Type dataType ) {
344344
* Convert a string given as upper or lower camel case into a constant format. For example {@code someVariable} would become
345345
* {@code SOME_VARIABLE}.
346346
*
347-
* @param upperOrLowerCamelString the string to convert
347+
* @param upperOrLowerCamel the string to convert
348348
* @return the string formatted as a constant.
349349
*/
350-
public static String toConstant( final String upperOrLowerCamelString ) {
351-
return TO_CONSTANT.convert( StringUtils.capitalize( upperOrLowerCamelString ) );
350+
public static String toConstant( final String upperOrLowerCamel ) {
351+
if ( isAllUppercaseWithUnderscore( upperOrLowerCamel ) ) {
352+
return upperOrLowerCamel;
353+
}
354+
return TO_CONSTANT.convert( StringUtils.capitalize( upperOrLowerCamel ) );
355+
}
356+
357+
public static boolean isAllUppercaseWithUnderscore( final String upperOrLowerCamel ) {
358+
return upperOrLowerCamel != null && upperOrLowerCamel.matches( "[A-Z0-9_]+" );
352359
}
353360

354361
/**

core/esmf-aspect-model-java-generator/src/test/java/org/eclipse/esmf/aspectmodel/java/AspectModelJavaUtilTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,18 @@
1313

1414
package org.eclipse.esmf.aspectmodel.java;
1515

16+
import static org.assertj.core.api.Assertions.assertThat;
17+
1618
import java.util.stream.IntStream;
19+
import java.util.stream.Stream;
1720

1821
import org.eclipse.esmf.metamodel.Type;
1922
import org.eclipse.esmf.metamodel.Value;
2023
import org.eclipse.esmf.test.shared.arbitraries.PropertyBasedTest;
2124

25+
import org.junit.jupiter.params.ParameterizedTest;
26+
import org.junit.jupiter.params.provider.Arguments;
27+
import org.junit.jupiter.params.provider.MethodSource;
2228
import net.jqwik.api.ForAll;
2329
import net.jqwik.api.Property;
2430
import net.jqwik.api.Tuple;
@@ -43,4 +49,25 @@ public boolean generatedEnumKeysAreValidJavaIdentifiers( @ForAll( "anyValidTypeV
4349
final String result = AspectModelJavaUtil.generateEnumKey( tuple.get2() );
4450
return isValidJavaIdentifier( result );
4551
}
52+
53+
@ParameterizedTest
54+
@MethodSource
55+
void generatedEnumKeysAreExpectedEnumNames( final String enumValueName, final String expectedEnumValueName ) {
56+
final String result = AspectModelJavaUtil.toConstant( enumValueName );
57+
assertThat( result ).isEqualTo( expectedEnumValueName );
58+
}
59+
60+
static Stream<Arguments> generatedEnumKeysAreExpectedEnumNames() {
61+
return Stream.of(
62+
Arguments.arguments( "ABC", "ABC" ),
63+
Arguments.arguments( "abc", "ABC" ),
64+
Arguments.arguments( "someEnum", "SOME_ENUM" ),
65+
Arguments.arguments( "SOME_ENUM", "SOME_ENUM" ),
66+
Arguments.arguments( "SomeEnum", "SOME_ENUM" ),
67+
Arguments.arguments( "aB", "A_B" ),
68+
Arguments.arguments( "aBc", "A_BC" ),
69+
Arguments.arguments( "a_b_c", "A_B_C" )
70+
);
71+
}
72+
4673
}

0 commit comments

Comments
 (0)