commit 69645cecfd684f772b9c2dfbb06c36228c467ba3
Author: Alex Lehmann <[email protected]>
AuthorDate: Sat Jan 21 16:11:21 2012 +0100
Commit: Alex Lehmann <[email protected]>
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));
}
}