/** * Either namePart is a string of digits, or it must be a valid name itself */ public static boolean isVariableNamePartValid( String namePart, Scope scope ) { if ( DIGITS_PATTERN.matcher(namePart).matches() ) { return true; } if ( REUSABLE_KEYWORDS.contains(namePart) ) { return scope.followUp(namePart, true); } return isVariableNameValid(namePart); }
@Test public void testVariableName() { String var = "valid variable name"; assertThat( FEELParser.isVariableNameValid( var ), is( true ) ); }
@Test public void testVariableNameWithValidCharacters() { String var = "?_873./-'+*valid"; assertThat( FEELParser.isVariableNameValid( var ), is( true ) ); }
@Test public void testVariableNameWithInvalidCharacterPercent() { String var = "?_873./-'%+*valid"; assertThat( FEELParser.isVariableNameValid( var ), is( false ) ); assertThat( FEELParser.checkVariableName( var ).get( 0 ).getMessage(), is( Msg.createMessage(Msg.INVALID_VARIABLE_NAME, "character", "%") ) ); }
@Test public void testVariableNameInvalidStartCharacter() { String var = "5variable can't start with a number"; assertThat( FEELParser.isVariableNameValid( var ), is( false ) ); assertThat( FEELParser.checkVariableName( var ).get( 0 ).getMessage(), is( Msg.createMessage(Msg.INVALID_VARIABLE_NAME_START, "character", "5") ) ); }
@Test public void testVariableNameCantStartWithKeyword() { String var = "for keyword is an invalid start for a variable name"; assertThat( FEELParser.isVariableNameValid( var ), is( false ) ); assertThat( FEELParser.checkVariableName( var ).get( 0 ).getMessage(), is( Msg.createMessage(Msg.INVALID_VARIABLE_NAME_START, "keyword", "for") ) ); }