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));
     }
 
 }



Reply via email to