commit 69645cecfd684f772b9c2dfbb06c36228c467ba3 Author: Alex Lehmann <alexl...@gmail.com> AuthorDate: Sat Jan 21 16:11:21 2012 +0100 Commit: Alex Lehmann <alexl...@gmail.com> CommitDate: Sat Jan 21 16:11:21 2012 +0100
JBEHAVE-710 Pending steps methods should remove even more characters use isJavaIdentifierPart instead of explicit list of removable chars JBEHAVE-680 PendingStepMethodGenerator doesn't put a space between ) and { diff --git a/jbehave-core/src/main/java/org/jbehave/core/steps/PendingStepMethodGenerator.java b/jbehave-core/src/main/java/org/jbehave/core/steps/PendingStepMethodGenerator.java index 11e2c9f..4985ef3 100755 --- a/jbehave-core/src/main/java/org/jbehave/core/steps/PendingStepMethodGenerator.java +++ b/jbehave-core/src/main/java/org/jbehave/core/steps/PendingStepMethodGenerator.java @@ -11,8 +11,6 @@ import static java.text.MessageFormat.format; public class PendingStepMethodGenerator { - private static final String[] REMOVABLES = new String[] { " ", "\'", "\"", "\\.", "\\,", "\\;", "\\:", "\\!", - "\\|", "<", ">", "\\*", "\\$", "\\\\", "\\/", "\\(", "\\)", "\\{", "\\}", "\\[", "\\]" }; private static final String METHOD_SOURCE = "@{0}(\"{1}\")\n@{2}\npublic void {3}()'{'\n // {4}\n'}'\n"; private final Keywords keywords; @@ -40,10 +38,15 @@ public class PendingStepMethodGenerator { private String methodName(StepType stepType, String stepPattern) { String name = stepType.name().toLowerCase() + WordUtils.capitalize(stepPattern); - for (String remove : REMOVABLES) { - name = name.replaceAll(remove, ""); + char filteredName[]=new char[name.length()]; + int index=0; + for(int i=0;i<name.length();i++) { + char ch=name.charAt(i); + if(Character.isJavaIdentifierPart(ch) && ch!='$' && ch!=127) { + filteredName[index++]=ch; } - return name; + } + return new String(filteredName,0,index); } } \ No newline at end of file diff --git a/jbehave-core/src/test/java/org/jbehave/core/steps/PendingStepMethodGeneratorBehaviour.java b/jbehave-core/src/test/java/org/jbehave/core/steps/PendingStepMethodGeneratorBehaviour.java index 5bf7e6a..a680c4b 100755 --- a/jbehave-core/src/test/java/org/jbehave/core/steps/PendingStepMethodGeneratorBehaviour.java +++ b/jbehave-core/src/test/java/org/jbehave/core/steps/PendingStepMethodGeneratorBehaviour.java @@ -62,6 +62,39 @@ public class PendingStepMethodGeneratorBehaviour { " // PENDING\n"+ "}\n"; assertThat(generator.generateMethod(pendingStep), equalTo(method)); + + // test basically all characters (issue JBEHAVE-710) + // When + pattern = "I'm searching for "; + for(int i=32;i<128;i++) { + pattern+=(char)i; + } + pendingStep = (PendingStep) StepCreator.createPendingStep("When "+pattern, null); + + // Then + method = + "@When(\""+escapeJava(pattern)+"\")\n" + + "@Pending\n"+ + "public void whenImSearchingFor0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz() {\n"+ + " // PENDING\n"+ + "}\n"; + assertThat(generator.generateMethod(pendingStep), equalTo(method)); + + // When + pattern = "I'm searching for "; + for(int i=160;i<256;i++) { + pattern+=(char)i; + } + pendingStep = (PendingStep) StepCreator.createPendingStep("When "+pattern, null); + + // Then + method = + "@When(\""+escapeJava(pattern)+"\")\n" + + "@Pending\n"+ + "public void whenImSearchingFor¢£¤¥ªµºÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ() {\n"+ + " // PENDING\n"+ + "}\n"; + assertThat(generator.generateMethod(pendingStep), equalTo(method)); } }