Title: [jbehave] [641] trunk/core/src/java/org/jbehave/core/story: [EK] Added behaviour for StoryPrinter, made it specify stories before printing.
Revision
641
Author
sirenian
Date
2007-01-02 05:50:17 -0600 (Tue, 02 Jan 2007)

Log Message

[EK] Added behaviour for StoryPrinter, made it specify stories before printing.
Moved expected description of SimpleStory into the class to avoid duplication in PlainTextRendererBehaviour.

Modified Paths

Added Paths

Diff

Modified: trunk/core/src/behaviour/org/jbehave/core/story/SimpleStory.java (640 => 641)

--- trunk/core/src/behaviour/org/jbehave/core/story/SimpleStory.java	2007-01-02 11:21:42 UTC (rev 640)
+++ trunk/core/src/behaviour/org/jbehave/core/story/SimpleStory.java	2007-01-02 11:50:17 UTC (rev 641)
@@ -7,9 +7,13 @@
 import org.jbehave.core.story.domain.Narrative;
 import org.jbehave.core.story.domain.ScenarioDrivenStory;
 import org.jbehave.core.story.domain.World;
+import org.jbehave.core.util.CamelCaseConverter;
 
 public class SimpleStory extends ScenarioDrivenStory {
 
+
+    private static final String NL = System.getProperty("line.separator");
+    
     public static String ROLE = "behaviour analyst";
 
     public static String FEATURE = "to see the behaviour of PlainTextRenderer";
@@ -81,4 +85,30 @@
         public void verify(World world) {
         }
     }
+    
+    public static String expectedDescription() {
+        StringBuffer expectedResult = new StringBuffer();
+        expectedResult.append("Story: ").append(textOf(new SimpleStory())).append(NL + NL);
+        expectedResult.append("As a ").append(SimpleStory.ROLE).append(NL);
+        expectedResult.append("I want ").append(SimpleStory.FEATURE).append(NL);
+        expectedResult.append("So that ").append(SimpleStory.BENEFIT).append(NL + NL);
+        expectedResult.append("Scenario: ").append(textOf(new SimpleStory.PlainTextRendererWorks())).append(NL + NL);
+        expectedResult.append("Given ").append(textOf(new SimpleStory.EverythingCompiles())).append(NL);
+        expectedResult.append("When ").append(textOf(new SimpleStory.ICrossMyFingers())).append(NL);
+        expectedResult.append("Then ").append(textOf(new SimpleStory.PlainTextRendererShouldWork())).append(NL + NL);
+        
+        expectedResult.append("Scenario: ").append(textOf(new SimpleStory.PlainTextRendererStillWorks())).append(NL + NL);
+        expectedResult.append("Given ").append(textOf(new SimpleStory.PlainTextRendererWorks())).append(NL);;
+        expectedResult.append("and ").append(textOf(new SimpleStory.FirstScenarioRanWithoutFallingOver())).append(NL);
+        expectedResult.append("When ").append(textOf(new SimpleStory.IDoNothing())).append(NL);
+        expectedResult.append("Then ").append(textOf(new SimpleStory.PlainTextRendererShouldStillWork())).append(NL);
+        expectedResult.append("and ").append(textOf(new SimpleStory.BehaviourClassShouldNotFail())).append(NL);
+        
+        return expectedResult.toString();
+    }
+    
+    
+    private static String textOf(Object obj) {
+        return new CamelCaseConverter(obj).toPhrase();
+    }
 }
\ No newline at end of file

Added: trunk/core/src/behaviour/org/jbehave/core/story/StoryPrinterBehaviour.java (0 => 641)

--- trunk/core/src/behaviour/org/jbehave/core/story/StoryPrinterBehaviour.java	                        (rev 0)
+++ trunk/core/src/behaviour/org/jbehave/core/story/StoryPrinterBehaviour.java	2007-01-02 11:50:17 UTC (rev 641)
@@ -0,0 +1,23 @@
+package org.jbehave.core.story;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
+import org.jbehave.core.mock.UsingMatchers;
+
+public class StoryPrinterBehaviour extends UsingMatchers {
+    
+    
+    public void shouldSpecifyAndPrintStoryAsPlainText() throws Exception {
+        
+        ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
+        PrintStream printStream = new PrintStream(byteStream);
+        
+        StoryPrinter printer = new StoryPrinter(printStream);        
+        printer.print(SimpleStory.class.getName());
+        String result = byteStream.toString();
+        
+        ensureThat(result, eq(SimpleStory.expectedDescription()));
+    }
+
+}

Modified: trunk/core/src/behaviour/org/jbehave/core/story/StoryRunnerBehaviour.java (640 => 641)

--- trunk/core/src/behaviour/org/jbehave/core/story/StoryRunnerBehaviour.java	2007-01-02 11:21:42 UTC (rev 640)
+++ trunk/core/src/behaviour/org/jbehave/core/story/StoryRunnerBehaviour.java	2007-01-02 11:50:17 UTC (rev 641)
@@ -17,7 +17,7 @@
 
 public class StoryRunnerBehaviour extends UsingMiniMock {
 
-	public void shouldRunStoryAndOutputResults() throws Exception {
+	public void shouldSpecifyAndRunStoryAndOutputResults() throws Exception {
 		final ByteArrayOutputStream buffer = new ByteArrayOutputStream();
 		
 		PrintStream stream = new PrintStream(buffer);

Modified: trunk/core/src/behaviour/org/jbehave/core/story/renderer/PlainTextRendererBehaviour.java (640 => 641)

--- trunk/core/src/behaviour/org/jbehave/core/story/renderer/PlainTextRendererBehaviour.java	2007-01-02 11:21:42 UTC (rev 640)
+++ trunk/core/src/behaviour/org/jbehave/core/story/renderer/PlainTextRendererBehaviour.java	2007-01-02 11:50:17 UTC (rev 641)
@@ -13,10 +13,7 @@
 import org.jbehave.core.mock.UsingMatchers;
 import org.jbehave.core.story.SimpleStory;
 import org.jbehave.core.story.domain.ScenarioDrivenStory;
-import org.jbehave.core.util.CamelCaseConverter;
 
-
-
 /**
  * @author <a href="" PROTECTED]">Elizabeth Keogh</a>
  */
@@ -37,24 +34,7 @@
 		
 		String result = byteStream.toString();
 		
-		StringBuffer expectedResult = new StringBuffer();
-		expectedResult.append("Story: ").append(textOf(story)).append(NL + NL);
-		expectedResult.append("As a ").append(SimpleStory.ROLE).append(NL);
-		expectedResult.append("I want ").append(SimpleStory.FEATURE).append(NL);
-		expectedResult.append("So that ").append(SimpleStory.BENEFIT).append(NL + NL);
-        expectedResult.append("Scenario: ").append(textOf(new SimpleStory.PlainTextRendererWorks())).append(NL + NL);
-        expectedResult.append("Given ").append(textOf(new SimpleStory.EverythingCompiles())).append(NL);
-		expectedResult.append("When ").append(textOf(new SimpleStory.ICrossMyFingers())).append(NL);
-		expectedResult.append("Then ").append(textOf(new SimpleStory.PlainTextRendererShouldWork())).append(NL + NL);
-		
-		expectedResult.append("Scenario: ").append(textOf(new SimpleStory.PlainTextRendererStillWorks())).append(NL + NL);
-		expectedResult.append("Given ").append(textOf(new SimpleStory.PlainTextRendererWorks())).append(NL);;
-		expectedResult.append("and ").append(textOf(new SimpleStory.FirstScenarioRanWithoutFallingOver())).append(NL);
-		expectedResult.append("When ").append(textOf(new SimpleStory.IDoNothing())).append(NL);
-		expectedResult.append("Then ").append(textOf(new SimpleStory.PlainTextRendererShouldStillWork())).append(NL);
-		expectedResult.append("and ").append(textOf(new SimpleStory.BehaviourClassShouldNotFail())).append(NL);
-		
-		ensureThat(result, eq(expectedResult.toString()));
+		ensureThat(result, eq(SimpleStory.expectedDescription()));
 	}
     
     public void shouldProvideComponentsWithCustomRenderingUsingStrings() {
@@ -72,8 +52,4 @@
         
         ensureThat(result, eq(expectedResult.toString()));
     }
-
-    private String textOf(Object obj) {
-        return new CamelCaseConverter(obj).toPhrase();
-    }
 }
\ No newline at end of file

Modified: trunk/core/src/java/org/jbehave/core/story/StoryPrinter.java (640 => 641)

--- trunk/core/src/java/org/jbehave/core/story/StoryPrinter.java	2007-01-02 11:21:42 UTC (rev 640)
+++ trunk/core/src/java/org/jbehave/core/story/StoryPrinter.java	2007-01-02 11:50:17 UTC (rev 641)
@@ -6,6 +6,8 @@
  * See license.txt for license details
  */
 package org.jbehave.core.story;
+import java.io.PrintStream;
+
 import org.jbehave.core.story.domain.Story;
 import org.jbehave.core.story.renderer.PlainTextRenderer;
 
@@ -20,18 +22,25 @@
 public class StoryPrinter {
 
     private ClassLoader classLoader;
+    private final PrintStream stream;
     
     public StoryPrinter(){
-        this(Thread.currentThread().getContextClassLoader());
+        this(System.out);
     }
+    
+    public StoryPrinter(PrintStream stream) {
+        this(Thread.currentThread().getContextClassLoader(), stream);
+    }
 
-    public StoryPrinter(ClassLoader classLoader) {
+    private StoryPrinter(ClassLoader classLoader, PrintStream stream) {
         this.classLoader = classLoader;
+        this.stream = stream;
     }
     
     public void print(String storyClassName) throws InstantiationException, IllegalAccessException, ClassNotFoundException{
         Story story = (Story) classLoader.loadClass(storyClassName).newInstance();
-        story.narrateTo(new PlainTextRenderer(System.out));
+        story.specify();
+        story.narrateTo(new PlainTextRenderer(stream));
     }
 
     public static void main(String[] args) {        


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to