// Copyright (C) 2003-2009 by Object Mentor, Inc. All rights reserved.
// Released under the terms of the CPL Common Public License version 1.0.
package fitnesse.responders.run;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import fitnesse.FitNesseContext;
import fitnesse.http.MockRequest;
import fitnesse.http.MockResponseSender;
import fitnesse.http.Response;
import fitnesse.testutil.FitSocketReceiver;
import fitnesse.testutil.FitNesseUtil;
import fitnesse.wiki.InMemoryPage;
import fitnesse.wiki.PageCrawler;
import fitnesse.wiki.PathParser;
import fitnesse.wiki.WikiPage;
public class ExposeThreadingIssueInMockResponseTest {
private WikiPage root;
private MockRequest request;
private TestResponder responder;
private FitNesseContext context;
private Response response;
private MockResponseSender sender;
private WikiPage testPage;
private String results;
private PageCrawler crawler;
private String simpleRunPageName;
private int port = 9123;
private FitSocketReceiver receiver;
@Before
public void setUp() throws Exception {
root = InMemoryPage.makeRoot("RooT");
crawler = root.getPageCrawler();
request = new MockRequest();
responder = new TestResponder();
context = FitNesseUtil.makeTestContext(root);
context.port = port;
receiver = new FitSocketReceiver(port, context.socketDealer);
receiver.receiveSocket();
}
@After
public void tearDown() throws Exception {
receiver.close();
}
public static void assertHasRegexp(String regexp, String output) {
Matcher match = Pattern.compile(regexp, Pattern.MULTILINE | Pattern.DOTALL).matcher(output);
boolean found = match.find();
if (!found)
Assert.fail("The regexp <" + regexp + "> was not found in: " + output + ".");
}
@Test
public void testDoSimpleSlimTable() throws Exception {
doSimpleRun(simpleSlimDecisionTable());
assertHasRegexp("<td><span class=\"pass\">wow</span></td>", results);
}
private String simpleSlimDecisionTable() {
return "!define TEST_SYSTEM {slim}\n" + "|!-DT:fitnesse.slim.test.TestSlim-!|\n" + "|string|get string arg?|\n"
+ "|wow|wow|\n";
}
private void doSimpleRun(String fixtureTable) throws Exception {
simpleRunPageName = "TestPage";
testPage = crawler.addPage(root, PathParser.parse(simpleRunPageName), classpathWidgets() + fixtureTable);
request.setResource(testPage.getName());
response = responder.makeResponse(context, request);
sender = new MockResponseSender();
sender.doSending(response);
results = sender.sentData();
}
private String classpathWidgets() {
return "!path classes\n";
}
}