Package org.jbehave.core.story.listener

Source Code of org.jbehave.core.story.listener.PlainTextScenarioListener

/*
* Created on 17-Sep-2004
*
* (c) 2003-2004 ThoughtWorks Ltd
*
* See license.txt for license details
*/
package org.jbehave.core.story.listener;

import java.io.Writer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.jbehave.core.listener.BehaviourListener;
import org.jbehave.core.listener.PlainTextListener;
import org.jbehave.core.result.Result;
import org.jbehave.core.story.result.ScenarioResult;
import org.jbehave.core.util.CamelCaseConverter;
import org.jbehave.core.util.Timer;



/**
* @author <a href="mailto:dan.north@thoughtworks.com">Dan North</a>
*/
public class PlainTextScenarioListener extends PlainTextListener implements BehaviourListener {
    private final List usedMocks = new ArrayList();
   
    public PlainTextScenarioListener(Writer writer) {
        super(writer, new Timer());
    }
   
    public PlainTextScenarioListener(Writer writer, Timer timer) {
        super(writer, timer);
    }
   
    public void gotResult(Result result) {
        if (result instanceof ScenarioResult) {
            ScenarioResult scenarioResult = (ScenarioResult) result;
            if (scenarioResult.usedMocks()) {
               usedMocks.add(result);
            }
        }
        super.gotResult(result);
    }
   
    protected void printDetails() {
        super.printDetails();
        if (!usedMocks.isEmpty()) {
            printUsedMocks();
        }
    }
   
    protected void printResult(int count, Result result) {
        String storyClassName = result.containerName();
        String storyName =  new CamelCaseConverter(result.containerName()).toPhrase();
        out.println(count + ") " + storyName + " -> " + result.name() + " [" + storyClassName + "]");
    }
   
    private void printUsedMocks() {
        if (!usedMocks.isEmpty()) {
            out.println();
            out.println("Used mocks: " + usedMocks.size());
            out.println();
            int count = 1;
            for (Iterator i = usedMocks.iterator(); i.hasNext(); count++) {
                Result result =  (Result) i.next();
                printResult(count, result);
            }
            out.println();
        }
    }
}
TOP

Related Classes of org.jbehave.core.story.listener.PlainTextScenarioListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.