#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 );
conflictingNames.addAll( existingVariableNames );
while ( conflictingNames.contains( name ) ) {
name = name + "_";
if ( !conflictingNames.contains( 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
public void testGetSaveVariableNameWithArrayExistingVariables() throws Exception {
assertThat( Strings.getSaveVariableName( "int[]" ) ).isEqualTo( "intArray" );
assertThat( Strings.getSaveVariableName( "Extends" ) ).isEqualTo( "extends_" );
assertThat( Strings.getSaveVariableName( "class" ) ).isEqualTo( "class_" );
assertThat( Strings.getSaveVariableName( "Class" ) ).isEqualTo( "class_" );
assertThat( Strings.getSaveVariableName( "Case" ) ).isEqualTo( "case_" );
assertThat( Strings.getSaveVariableName( "Synchronized" ) ).isEqualTo( "synchronized_" );
assertThat( Strings.getSaveVariableName( "prop", "prop", "prop_" ) ).isEqualTo( "prop__" );
assertThat( Strings.getSaveVariableName( "Extends" ) ).isEqualTo( "extends1" );
assertThat( Strings.getSaveVariableName( "class" ) ).isEqualTo( "class1" );
assertThat( Strings.getSaveVariableName( "Class" ) ).isEqualTo( "class1" );
assertThat( Strings.getSaveVariableName( "Case" ) ).isEqualTo( "case1" );
assertThat( Strings.getSaveVariableName( "Synchronized" ) ).isEqualTo( "synchronized1" );
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
public void testGetSaveVariableNameWithCollection() throws Exception {
assertThat( Strings.getSaveVariableName( "int[]", new ArrayList<String>() ) ).isEqualTo( "intArray" );
assertThat( Strings.getSaveVariableName( "Extends", new ArrayList<String>() ) ).isEqualTo( "extends_" );
assertThat( Strings.getSaveVariableName( "prop", Arrays.asList( "prop", "prop_" ) ) ).isEqualTo( "prop__" );
assertThat( Strings.getSaveVariableName( "Extends", new ArrayList<String>() ) ).isEqualTo( "extends1" );
assertThat( Strings.getSaveVariableName( "prop", Arrays.asList( "prop", "prop1" ) ) ).isEqualTo( "prop2" );
assertThat( Strings.getSaveVariableName( "prop.font", Arrays.asList( "propFont", "propFont_" ) ) )
.isEqualTo( "propFont__" );
.isEqualTo( "propFont1" );
}
@Test