#941 adapting strategy naming of safe variable names

This commit is contained in:
sjaakd 2016-12-21 19:31:08 +01:00
parent d1388c3a45
commit 2fdd392e19
2 changed files with 24 additions and 12 deletions

View File

@ -156,11 +156,17 @@ public class Strings {
Set<String> conflictingNames = new HashSet<String>( KEYWORDS ); Set<String> conflictingNames = new HashSet<String>( KEYWORDS );
conflictingNames.addAll( existingVariableNames ); conflictingNames.addAll( existingVariableNames );
while ( conflictingNames.contains( name ) ) { if ( !conflictingNames.contains( name ) ) {
name = name + "_"; return name;
} }
return name; int c = 1;
String seperator = Character.isDigit( name.charAt( name.length() - 1 ) ) ? "_" : "";
while ( conflictingNames.contains( name + seperator + c ) ) {
c++;
}
return name + seperator + c;
} }
/** /**

View File

@ -73,21 +73,27 @@ public class StringsTest {
@Test @Test
public void testGetSaveVariableNameWithArrayExistingVariables() throws Exception { public void testGetSaveVariableNameWithArrayExistingVariables() throws Exception {
assertThat( Strings.getSaveVariableName( "int[]" ) ).isEqualTo( "intArray" ); assertThat( Strings.getSaveVariableName( "int[]" ) ).isEqualTo( "intArray" );
assertThat( Strings.getSaveVariableName( "Extends" ) ).isEqualTo( "extends_" ); assertThat( Strings.getSaveVariableName( "Extends" ) ).isEqualTo( "extends1" );
assertThat( Strings.getSaveVariableName( "class" ) ).isEqualTo( "class_" ); assertThat( Strings.getSaveVariableName( "class" ) ).isEqualTo( "class1" );
assertThat( Strings.getSaveVariableName( "Class" ) ).isEqualTo( "class_" ); assertThat( Strings.getSaveVariableName( "Class" ) ).isEqualTo( "class1" );
assertThat( Strings.getSaveVariableName( "Case" ) ).isEqualTo( "case_" ); assertThat( Strings.getSaveVariableName( "Case" ) ).isEqualTo( "case1" );
assertThat( Strings.getSaveVariableName( "Synchronized" ) ).isEqualTo( "synchronized_" ); assertThat( Strings.getSaveVariableName( "Synchronized" ) ).isEqualTo( "synchronized1" );
assertThat( Strings.getSaveVariableName( "prop", "prop", "prop_" ) ).isEqualTo( "prop__" ); assertThat( Strings.getSaveVariableName( "prop", "prop", "prop_" ) ).isEqualTo( "prop1" );
}
@Test
public void testGetSaveVariableNameVariablesEndingOnNumberVariables() throws Exception {
assertThat( Strings.getSaveVariableName( "prop1", "prop1" ) ).isEqualTo( "prop1_1" );
assertThat( Strings.getSaveVariableName( "prop1", "prop1", "prop1_1" ) ).isEqualTo( "prop1_2" );
} }
@Test @Test
public void testGetSaveVariableNameWithCollection() throws Exception { public void testGetSaveVariableNameWithCollection() throws Exception {
assertThat( Strings.getSaveVariableName( "int[]", new ArrayList<String>() ) ).isEqualTo( "intArray" ); assertThat( Strings.getSaveVariableName( "int[]", new ArrayList<String>() ) ).isEqualTo( "intArray" );
assertThat( Strings.getSaveVariableName( "Extends", new ArrayList<String>() ) ).isEqualTo( "extends_" ); assertThat( Strings.getSaveVariableName( "Extends", new ArrayList<String>() ) ).isEqualTo( "extends1" );
assertThat( Strings.getSaveVariableName( "prop", Arrays.asList( "prop", "prop_" ) ) ).isEqualTo( "prop__" ); assertThat( Strings.getSaveVariableName( "prop", Arrays.asList( "prop", "prop1" ) ) ).isEqualTo( "prop2" );
assertThat( Strings.getSaveVariableName( "prop.font", Arrays.asList( "propFont", "propFont_" ) ) ) assertThat( Strings.getSaveVariableName( "prop.font", Arrays.asList( "propFont", "propFont_" ) ) )
.isEqualTo( "propFont__" ); .isEqualTo( "propFont1" );
} }
@Test @Test