Title: [1603] trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/parser: a hybridized resolving strategy

Diff

Modified: trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolverBehaviour.java (1602 => 1603)

--- trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolverBehaviour.java	2010-03-15 23:33:32 UTC (rev 1602)
+++ trunk/core/jbehave-core/src/behaviour/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolverBehaviour.java	2010-03-19 18:55:53 UTC (rev 1603)
@@ -1,12 +1,12 @@
 package org.jbehave.scenario.parser;
 
+import org.jbehave.scenario.JUnitScenario;
+import org.junit.Test;
+
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.jbehave.Ensure.ensureThat;
 import static org.jbehave.scenario.parser.UnderscoredCamelCaseResolver.NUMBERS_AS_UPPER_CASE_LETTERS_PATTERN;
 
-import org.jbehave.scenario.JUnitScenario;
-import org.junit.Test;
-
 public class UnderscoredCamelCaseResolverBehaviour {
 
     @Test
@@ -24,6 +24,17 @@
     }
     
     @Test
+    /**
+     * Some teams are not going to have /scenarios/ directories,
+     * they are going to co-mingle with tests and match in Maven land with *Scenario
+     */
+    public void shouldResolveCamelCasedClassNameToUnderscoredNameWithExtensionStrippingExtraneousWord() {
+    	ScenarioNameResolver resolver = new UnderscoredCamelCaseResolver(".scenario").removeFromClassname("Scenario");
+        ensureThat(resolver.resolve(CamelCaseScenario.class),
+                equalTo("org/jbehave/scenario/parser/camel_case.scenario"));
+    }
+
+    @Test
     public void shouldResolveCamelCasedClassNameWithNumbersTreatedAsLowerCaseLetters() {
     	ScenarioNameResolver resolver = new UnderscoredCamelCaseResolver();
         ensureThat(resolver.resolve(CamelCaseWithA3Qualifier.class),

Modified: trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java (1602 => 1603)

--- trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java	2010-03-15 23:33:32 UTC (rev 1602)
+++ trunk/core/jbehave-core/src/main/java/org/jbehave/scenario/parser/UnderscoredCamelCaseResolver.java	2010-03-19 18:55:53 UTC (rev 1603)
@@ -35,8 +35,9 @@
 	public static final String NUMBERS_AS_UPPER_CASE_LETTERS_PATTERN = "([A-Z0-9].*?)([A-Z0-9]|\\z)";
 	private static final String UNDERSCORE = "_";
 	private final String resolutionPattern;
+    private String wordToRemove = "";
 
-	public UnderscoredCamelCaseResolver() {
+    public UnderscoredCamelCaseResolver() {
 		this(DEFAULT_EXTENSION);
 	}
 
@@ -53,8 +54,10 @@
 	@Override
 	protected String resolveFileName(
 			Class<? extends RunnableScenario> scenarioClass) {
-		Matcher matcher = compile(resolutionPattern).matcher(
-				scenarioClass.getSimpleName());
+        String simpleName = scenarioClass.getSimpleName();
+        simpleName = simpleName.replace(wordToRemove, "");
+        Matcher matcher = compile(resolutionPattern).matcher(
+                simpleName);
 		int startAt = 0;
 		StringBuilder builder = new StringBuilder();
 		while (matcher.find(startAt)) {
@@ -65,4 +68,8 @@
 		return builder.substring(0, builder.length() - 1);
 	}
 
+    public ScenarioNameResolver removeFromClassname(String toStripOff) {
+        this.wordToRemove = toStripOff;
+        return this;
+    }
 }


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to