package cucumber.runtime.snippets; import org.junit.Test; import static org.junit.Assert.assertEquals; public class FunctionNameGeneratorTest { private FunctionNameGenerator underscore = new FunctionNameGenerator(new UnderscoreConcatenator()); private FunctionNameGenerator camelCase = new FunctionNameGenerator(new CamelCaseConcatenator()); private void assertFunctionNames(String expectedUnderscore, String expectedCamelCase, String sentence) { assertEquals(expectedUnderscore, underscore.generateFunctionName(sentence)); assertEquals(expectedCamelCase, camelCase.generateFunctionName(sentence)); } @Test(expected = IllegalArgumentException.class) public void testSanitizeEmptyFunctionName() { underscore.generateFunctionName(""); } @Test public void testSanitizeFunctionName() { assertFunctionNames( "test_function_123", "testFunction123", ".test function 123 "); } @Test public void sanitizes_simple_sentence() { assertFunctionNames( "i_am_a_function_name", "iAmAFunctionName", "I am a function name"); } @Test public void sanitizes_sentence_with_multiple_spaces() { assertFunctionNames( "i_am_a_function_name", "iAmAFunctionName", "I am a function name"); } @Test public void sanitizes_pascal_case_word() { assertFunctionNames( "function_name_with_pascalCase_word", "functionNameWithPascalCaseWord", "Function name with pascalCase word"); } @Test public void sanitizes_camel_case_word() { assertFunctionNames( "function_name_with_CamelCase_word", "functionNameWithCamelCaseWord", "Function name with CamelCase word"); } @Test public void sanitizes_acronyms() { assertFunctionNames( "function_name_with_multi_char_acronym_HTTP_Server", "functionNameWithMultiCharAcronymHTTPServer", "Function name with multi char acronym HTTP Server"); } @Test public void sanitizes_two_char_acronym() { assertFunctionNames( "function_name_with_two_char_acronym_US", "functionNameWithTwoCharAcronymUS", "Function name with two char acronym US"); } }