001: // Copyright (C) 2003,2004,2005 by Object Mentor, Inc. All rights reserved.
002: // Released under the terms of the GNU General Public License version 2 or later.
003: package fitnesse.responders.run;
004:
005: import fitnesse.runner.*;
006: import fitnesse.components.FitProtocol;
007: import fitnesse.http.*;
008: import fitnesse.FitNesseContext;
009: import fitnesse.testutil.RegexTest;
010: import fit.Counts;
011: import java.io.*;
012:
013: public class TestResultFormattingResponderTest extends RegexTest {
014: private PipedOutputStream output;
015: private PipedInputStream input;
016: private TestResultFormattingResponder responder;
017: private MockResultFormatter formatter;
018: private PageResult result1;
019: private PageResult result2;
020: private FitNesseContext context;
021:
022: public void setUp() throws Exception {
023: output = new PipedOutputStream();
024: input = new PipedInputStream(output);
025:
026: responder = new TestResultFormattingResponder();
027: formatter = new MockResultFormatter();
028: responder.formatter = formatter;
029:
030: result1 = new PageResult("Result1Title",
031: new Counts(1, 2, 3, 4), "result1 data");
032: result2 = new PageResult("Result2Title",
033: new Counts(4, 3, 2, 1), "result2 data");
034:
035: context = new FitNesseContext();
036: }
037:
038: public void testOneResult() throws Exception {
039: FitProtocol.writeData(result1.toString(), output);
040: FitProtocol.writeCounts(new Counts(0, 0, 0, 0), output);
041: responder.processResults(input);
042:
043: assertEquals(1, formatter.results.size());
044: assertEquals(result1.toString(), formatter.results.get(0)
045: .toString());
046: }
047:
048: public void testTwoResults() throws Exception {
049: FitProtocol.writeData(result1.toString(), output);
050: FitProtocol.writeData(result2.toString(), output);
051: FitProtocol.writeCounts(new Counts(0, 0, 0, 0), output);
052: responder.processResults(input);
053:
054: assertEquals(2, formatter.results.size());
055: assertEquals(result1.toString(), formatter.results.get(0)
056: .toString());
057: assertEquals(result2.toString(), formatter.results.get(1)
058: .toString());
059: }
060:
061: public void testFinalCounts() throws Exception {
062: FitProtocol.writeData(result1.toString(), output);
063: Counts counts = new Counts(1, 2, 3, 4);
064: FitProtocol.writeCounts(counts, output);
065: responder.processResults(input);
066:
067: assertEquals(counts, formatter.finalCounts);
068: }
069:
070: public void testMakeResponse() throws Exception {
071: MockRequest request = new MockRequest();
072: ByteArrayOutputStream output = new ByteArrayOutputStream();
073: FitProtocol.writeData(result1.toString(), output);
074: FitProtocol.writeData(result2.toString(), output);
075: FitProtocol.writeCounts(new Counts(5, 5, 5, 5), output);
076: request.addInput("results", output.toString());
077:
078: Response response = responder.makeResponse(context, request);
079: String content = new MockResponseSender(response).sentData();
080:
081: assertSubString("Mock Results", content);
082: }
083:
084: public void testMockFormatter() throws Exception {
085: checkFormtterCreated(null, MockResultFormatter.class);
086: }
087:
088: public void testHtmlFormatter() throws Exception {
089: checkFormtterCreated("html", HtmlResultFormatter.class);
090: }
091:
092: public void testXmlFormatter() throws Exception {
093: checkFormtterCreated("xml", XmlResultFormatter.class);
094: }
095:
096: private void checkFormtterCreated(String format,
097: Class formatterClass) throws Exception {
098: MockRequest request = new MockRequest();
099: request.addHeader("Host", "locahost:8080");
100: request.setResource("/");
101: if (format != null)
102: request.addInput("format", format);
103: responder.init(context, request);
104: assertEquals(formatterClass, responder.formatter.getClass());
105: }
106: }
|