Title: [880] trunk/jbehave-core/src/java/org/jbehave: Not passing steps as strings around any more, first step in refactoring for multiple scenarios in a file

Diff

Modified: trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertCanBeActivated.java (879 => 880)

--- trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertCanBeActivated.java	2008-07-25 09:26:30 UTC (rev 879)
+++ trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertCanBeActivated.java	2008-07-27 21:53:10 UTC (rev 880)
@@ -2,6 +2,7 @@
 
 import org.jbehave.OurTechnique;
 import org.jbehave.scenario.Scenario;
+import org.jbehave.scenario.parser.PatternStepParser;
 import org.jbehave.scenario.parser.ScenarioFileLoader;
 import org.jbehave.scenario.parser.UnderscoredCamelCaseResolver;
 
@@ -15,7 +16,7 @@
     public StatusAlertCanBeActivated(final ClassLoader classLoader) {
         super(new OurTechnique() {
 			public ScenarioFileLoader forDefiningScenarios() {
-				return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(".scenario"), classLoader);
+				return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(".scenario"), classLoader, new PatternStepParser());
 			}
         }, new StockSteps(10.0));
     }

Modified: trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertIsNeverActivated.java (879 => 880)

--- trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertIsNeverActivated.java	2008-07-25 09:26:30 UTC (rev 879)
+++ trunk/examples/trader/src/main/java/org/jbehave/examples/trader/scenarios/StatusAlertIsNeverActivated.java	2008-07-27 21:53:10 UTC (rev 880)
@@ -2,6 +2,7 @@
 
 import org.jbehave.OurTechnique;
 import org.jbehave.scenario.Scenario;
+import org.jbehave.scenario.parser.PatternStepParser;
 import org.jbehave.scenario.parser.ScenarioFileLoader;
 import org.jbehave.scenario.parser.UnderscoredCamelCaseResolver;
 
@@ -16,7 +17,7 @@
         super(new OurTechnique() {
         	@Override
         	public ScenarioFileLoader forDefiningScenarios() {
-        		return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(".scenario"), classLoader);
+        		return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(".scenario"), classLoader, new PatternStepParser());
         	}
         }, new StockSteps(100.0));
     }

Modified: trunk/jbehave-core/src/behaviour/org/jbehave/scenario/ScenarioBehaviour.java (879 => 880)

--- trunk/jbehave-core/src/behaviour/org/jbehave/scenario/ScenarioBehaviour.java	2008-07-25 09:26:30 UTC (rev 879)
+++ trunk/jbehave-core/src/behaviour/org/jbehave/scenario/ScenarioBehaviour.java	2008-07-27 21:53:10 UTC (rev 880)
@@ -16,6 +16,7 @@
 import org.jbehave.scenario.annotations.When;
 import org.jbehave.scenario.parser.PatternStepParser;
 import org.jbehave.scenario.parser.ScenarioDefiner;
+import org.jbehave.scenario.parser.ScenarioDefinition;
 import org.jbehave.scenario.parser.ScenarioFileLoader;
 import org.jbehave.scenario.parser.StepParser;
 import org.jbehave.scenario.parser.scenarios.MyPendingScenario;
@@ -41,7 +42,7 @@
 		PrintStreamScenarioReporter reporter = new PrintStreamScenarioReporter(new PrintStream(output));
 		MySteps steps = new MySteps();
 		
- 		stub(fileLoader.loadStepsFor(MyScenario.class)).toReturn("my_scenario");
+ 		stub(fileLoader.loadStepsFor(MyScenario.class)).toReturn(new ScenarioDefinition(stepParser, "my_scenario"));
 		stub(stepParser.findSteps("my_scenario")).toReturn(Arrays.asList(new String[] {
 				"Given I have 2 cows",
 				"When I leave them over the winter",
@@ -65,7 +66,7 @@
         ScenarioReporter reporter = new BufferScenarioReporter(buffer);
         MySteps steps = new MySteps();
         
-        stub(fileLoader.loadStepsFor(MyScenario.class)).toReturn("my_scenario");
+        stub(fileLoader.loadStepsFor(MyScenario.class)).toReturn(new ScenarioDefinition(stepParser, "my_scenario"));
         stub(stepParser.findSteps("my_scenario")).toReturn(Arrays.asList(new String[] {
                 "Given I have 2 cows",
                 "When I leave them over the winter",
@@ -94,7 +95,7 @@
 		ScenarioReporter reporter = new PrintStreamScenarioReporter(new PrintStream(output));
 		MySteps steps = new MySteps();
 		
-        stub(scenarioDefiner.loadStepsFor(MyScenario.class)).toReturn("my_scenario");
+        stub(scenarioDefiner.loadStepsFor(MyScenario.class)).toReturn(new ScenarioDefinition(stepParser, "my_scenario"));
 		stub(stepParser.findSteps("my_scenario")).toReturn(Arrays.asList(new String[] {
 				"Given I have 2 cows",
 				"When I put them in a field",
@@ -123,8 +124,6 @@
 
 				public ScenarioDefiner forDefiningScenarios() { return scenarioDefiner; }
 
-				public StepParser forParsingSteps() { return stepParser; }
-
 				public ScenarioReporter forReportingScenarios() { return scenarioReporter; }
 				
 			}, steps);

Modified: trunk/jbehave-core/src/behaviour/org/jbehave/scenario/parser/ScenarioFileLoaderBehaviour.java (879 => 880)

--- trunk/jbehave-core/src/behaviour/org/jbehave/scenario/parser/ScenarioFileLoaderBehaviour.java	2008-07-25 09:26:30 UTC (rev 879)
+++ trunk/jbehave-core/src/behaviour/org/jbehave/scenario/parser/ScenarioFileLoaderBehaviour.java	2008-07-27 21:53:10 UTC (rev 880)
@@ -1,10 +1,11 @@
 package org.jbehave.scenario.parser;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.jbehave.Ensure.ensureThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.List;
 
 import org.jbehave.scenario.Scenario;
 import org.jbehave.scenario.parser.scenarios.MyPendingScenario;
@@ -14,14 +15,19 @@
 
     @Test
     public void canLoadScenario() {
-        ScenarioFileLoader loader = new ScenarioFileLoader();
-        ensureThat(loader.loadStepsFor(MyPendingScenario.class), equalTo("Given my scenario"));
+    	StepParser parser = mock(StepParser.class);
+        ScenarioFileLoader loader = new ScenarioFileLoader(parser);
+        ScenarioDefinition definition = loader.loadStepsFor(MyPendingScenario.class);
+        definition.getSteps();
+        verify(parser).findSteps("Given my scenario");
     }
 
     @Test
     public void canLoadScenarioWithCustomFilenameResolver() {
-        ScenarioFileLoader loader = new ScenarioFileLoader(new CasePreservingResolver(".scenario"));
-        ensureThat(loader.loadStepsFor(MyPendingScenario.class), equalTo("Given my scenario"));
+    	StepParser parser = mock(StepParser.class);
+        ScenarioFileLoader loader = new ScenarioFileLoader(new CasePreservingResolver(".scenario"), parser);
+        loader.loadStepsFor(MyPendingScenario.class).getSteps();
+        verify(parser).findSteps("Given my scenario");
     }
     
     @Test(expected = ScenarioNotFoundException.class)
@@ -57,7 +63,5 @@
 
             };
         }
-
     }
-
 }

Modified: trunk/jbehave-core/src/java/org/jbehave/OurTechnique.java (879 => 880)

--- trunk/jbehave-core/src/java/org/jbehave/OurTechnique.java	2008-07-25 09:26:30 UTC (rev 879)
+++ trunk/jbehave-core/src/java/org/jbehave/OurTechnique.java	2008-07-27 21:53:10 UTC (rev 880)
@@ -7,15 +7,11 @@
 
 public class OurTechnique implements Technique {
 
-	public PatternStepParser forParsingSteps() {
-		return new PatternStepParser();
-	}
-
 	public PrintStreamScenarioReporter forReportingScenarios() {
 		return new PrintStreamScenarioReporter();
 	}
 
 	public ScenarioFileLoader forDefiningScenarios() {
-		return new ScenarioFileLoader(new UnderscoredCamelCaseResolver());
+		return new ScenarioFileLoader(new UnderscoredCamelCaseResolver(), new PatternStepParser());
 	}	
 }

Modified: trunk/jbehave-core/src/java/org/jbehave/Technique.java (879 => 880)

--- trunk/jbehave-core/src/java/org/jbehave/Technique.java	2008-07-25 09:26:30 UTC (rev 879)
+++ trunk/jbehave-core/src/java/org/jbehave/Technique.java	2008-07-27 21:53:10 UTC (rev 880)
@@ -2,7 +2,6 @@
 
 import org.jbehave.scenario.ScenarioReporter;
 import org.jbehave.scenario.parser.ScenarioDefiner;
-import org.jbehave.scenario.parser.StepParser;
 
 /**
  * Provides techniques for defining, parsing and reporting scenarios.
@@ -12,8 +11,6 @@
 public interface Technique {
 
 	ScenarioDefiner forDefiningScenarios();
-	
-	StepParser forParsingSteps();
 
 	ScenarioReporter forReportingScenarios();
 

Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/Scenario.java (879 => 880)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/Scenario.java	2008-07-25 09:26:30 UTC (rev 879)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/Scenario.java	2008-07-27 21:53:10 UTC (rev 880)
@@ -5,7 +5,7 @@
 import org.jbehave.OurTechnique;
 import org.jbehave.Technique;
 import org.jbehave.scenario.parser.ScenarioDefiner;
-import org.jbehave.scenario.parser.StepParser;
+import org.jbehave.scenario.parser.ScenarioDefinition;
 import org.jbehave.scenario.steps.CandidateStep;
 import org.jbehave.scenario.steps.PendingStep;
 import org.jbehave.scenario.steps.Step;
@@ -25,7 +25,6 @@
 
     private final Steps[] candidateSteps;
     private final ScenarioDefiner scenarioDefiner;
-    private final StepParser stepParser;
     private final ScenarioRunner scenarioRunner;
 
     public Scenario(Steps... candidateSteps) {
@@ -35,14 +34,13 @@
     public Scenario(Technique technique, Steps... candidateSteps) {
         this.candidateSteps = candidateSteps;
 		this.scenarioDefiner = technique.forDefiningScenarios();
-        this.stepParser = technique.forParsingSteps();
         this.scenarioRunner = new ScenarioRunner(technique.forReportingScenarios());
     }
 
     @Test
     public void runUsingSteps() throws Throwable {
-        List<String> stringSteps = stepParser.findSteps(scenarioDefiner.loadStepsFor(this.getClass()));
-        Step[] steps = createRealStepsFromCandidates(stringSteps);
+        ScenarioDefinition definition = scenarioDefiner.loadStepsFor(this.getClass());
+        Step[] steps = createRealStepsFromCandidates(definition.getSteps());
         scenarioRunner.run(steps);
     }
 

Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioDefiner.java (879 => 880)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioDefiner.java	2008-07-25 09:26:30 UTC (rev 879)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioDefiner.java	2008-07-27 21:53:10 UTC (rev 880)
@@ -4,6 +4,6 @@
 
 public interface ScenarioDefiner {
 
-	String loadStepsFor(Class<? extends Scenario> clazz);
+	ScenarioDefinition loadStepsFor(Class<? extends Scenario> clazz);
 
 }
\ No newline at end of file

Added: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioDefinition.java (0 => 880)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioDefinition.java	                        (rev 0)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioDefinition.java	2008-07-27 21:53:10 UTC (rev 880)
@@ -0,0 +1,19 @@
+package org.jbehave.scenario.parser;
+
+import java.util.List;
+
+public class ScenarioDefinition {
+
+	private final StepParser stepParser;
+	private final String scenarioAsString;
+
+	public ScenarioDefinition(StepParser stepParser, String scenarioAsString) {
+		this.stepParser = stepParser;
+		this.scenarioAsString = scenarioAsString;
+	}
+
+	public List<String> getSteps() {
+		return stepParser.findSteps(scenarioAsString);
+	}
+
+}

Modified: trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioFileLoader.java (879 => 880)

--- trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioFileLoader.java	2008-07-25 09:26:30 UTC (rev 879)
+++ trunk/jbehave-core/src/java/org/jbehave/scenario/parser/ScenarioFileLoader.java	2008-07-27 21:53:10 UTC (rev 880)
@@ -10,25 +10,31 @@
 
     private final ScenarioFileNameResolver resolver;
     private final ClassLoader classLoader;
+	private final StepParser stepParser;
 
     public ScenarioFileLoader() {
-        this(new UnderscoredCamelCaseResolver(), Thread.currentThread().getContextClassLoader());
+        this(new UnderscoredCamelCaseResolver(), Thread.currentThread().getContextClassLoader(), new PatternStepParser());
     }
 
-    public ScenarioFileLoader(ScenarioFileNameResolver converter) {
-        this(converter, Thread.currentThread().getContextClassLoader());
+    public ScenarioFileLoader(StepParser stepParser) {
+		this(new UnderscoredCamelCaseResolver(), Thread.currentThread().getContextClassLoader(), stepParser);
+	}
+
+    public ScenarioFileLoader(ScenarioFileNameResolver converter, StepParser parser) {
+        this(converter, Thread.currentThread().getContextClassLoader(), parser);
     }
 
     public ScenarioFileLoader(ClassLoader classLoader) {
-        this(new UnderscoredCamelCaseResolver(), classLoader);
+        this(new UnderscoredCamelCaseResolver(), classLoader, new PatternStepParser());
     }
 
-    public ScenarioFileLoader(ScenarioFileNameResolver resolver, ClassLoader classLoader) {
+    public ScenarioFileLoader(ScenarioFileNameResolver resolver, ClassLoader classLoader, StepParser stepParser) {
         this.resolver = resolver;
         this.classLoader = classLoader;
+		this.stepParser = stepParser;
     }
 
-    private InputStream loadStepsAsStreamFor(Class<? extends Scenario> scenarioClass) {
+	private InputStream loadStepsAsStreamFor(Class<? extends Scenario> scenarioClass) {
         String scenarioFileName = resolver.resolve(scenarioClass);
         InputStream stream = classLoader.getResourceAsStream(scenarioFileName);
         if ( stream == null ){
@@ -37,8 +43,8 @@
         return stream;
     }
 
-    public String loadStepsFor(Class<? extends Scenario> scenarioClass) {
-        return asString(loadStepsAsStreamFor(scenarioClass));
+    public ScenarioDefinition loadStepsFor(Class<? extends Scenario> scenarioClass) {
+        return new ScenarioDefinition(stepParser, asString(loadStepsAsStreamFor(scenarioClass)));
     }
 
     private String asString(InputStream stream) {


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to