package spec.concordion.command.assertEquals.whitespace; import org.concordion.integration.junit3.ConcordionTestCase; import org.concordion.internal.BrowserStyleWhitespaceComparator; import test.concordion.TestRig; public class WhitespaceTest extends ConcordionTestCase { public String whichSnippetsSucceed(String snippet1, String snippet2, String evaluationResult) throws Exception { return which(succeeds(snippet1, evaluationResult), succeeds(snippet2, evaluationResult)); } public String whichSnippetsFail(String snippet1, String snippet2, String evaluationResult) throws Exception { return which(fails(snippet1, evaluationResult), fails(snippet2, evaluationResult)); } private static String which(boolean b1, boolean b2) { if (b1 && b2) { return "both"; } else if (b1) { return "the first of"; } else if (b2) { return "the second of"; } return "neither"; } private boolean fails(String snippet, String evaluationResult) throws Exception { return !succeeds(snippet, evaluationResult); } private boolean succeeds(String snippet, String evaluationResult) throws Exception { return new TestRig() .withStubbedEvaluationResult(evaluationResult) .processFragment(snippet) .isSuccess(); } public String normalize(String s) { // Bit naughty calling internal method normalize() directly return replaceRealWhitespaceCharactersWithNames( BrowserStyleWhitespaceComparator.normalize(replaceNamedWhitespaceWithRealWhitespaceCharacters(s))); } private static String replaceNamedWhitespaceWithRealWhitespaceCharacters(String s) { return s.replaceAll("\\[SPACE\\]", " ") .replaceAll("\\[TAB\\]", "\t") .replaceAll("\\[LF\\]", "\n") .replaceAll("\\[CR\\]", "\r"); } private static String replaceRealWhitespaceCharactersWithNames(String s) { return s.replaceAll(" ", "[SPACE]"); } }