fitnesse.wikitext.test.ParserTestHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of fitnesse Show documentation
Show all versions of fitnesse Show documentation
The fully integrated standalone wiki, and acceptance testing framework.
package fitnesse.wikitext.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import fitnesse.html.HtmlElement;
import fitnesse.wiki.WikiPage;
import fitnesse.wiki.WikiPageDummy;
import fitnesse.wikitext.parser.HtmlTranslator;
import fitnesse.wikitext.parser.Parser;
import fitnesse.wikitext.parser.ParsingPage;
import fitnesse.wikitext.parser.Scanner;
import fitnesse.wikitext.parser.SourcePage;
import fitnesse.wikitext.parser.Symbol;
import fitnesse.wikitext.parser.SymbolProvider;
import fitnesse.wikitext.parser.VariableSource;
import fitnesse.wikitext.parser.WikiSourcePage;
import fitnesse.wikitext.parser.WikiTranslator;
public class ParserTestHelper {
public static final String newLineRendered = "
";
public static void assertScans(String input, String expected) {
Scanner scanner = new Scanner(new TestSourcePage(), input);
assertScans(expected, scanner);
}
public static void assertScansTokenType(String input, String expected, boolean found) {
Scanner scanner = new Scanner(new TestSourcePage(), input);
while (true) {
scanner.moveNext();
if (scanner.isEnd()) break;
if (scanner.getCurrent().getType().toString().equals(expected)) {
assertTrue(found);
return;
}
}
assertTrue(!found);
}
public static void assertScans(String expected, Scanner scanner) {
StringBuilder result = new StringBuilder();
while (true) {
scanner.moveNext();
if (scanner.isEnd()) break;
if (result.length() > 0) result.append(",");
Symbol current = scanner.getCurrent();
String name = current.getType().toString();
result.append(name);
String content = current.getContent();
if (content.length() > 0) result.append("=").append(content);
}
assertEquals(expected, result.toString());
}
public static void assertTranslatesTo(String input, String expected) {
assertTranslatesTo(new TestSourcePage(), input, expected);
}
public static void assertTranslatesTo(WikiPage page, VariableSource variableSource, String expected) throws Exception {
assertEquals(expected, translateToHtml(page, page.getData().getContent(), variableSource));
}
public static void assertTranslatesTo(String input, VariableSource variableSource, String expected) {
assertEquals(expected, translateToHtml(new WikiPageDummy(), input, variableSource));
}
public static void assertTranslatesTo(WikiPage page, String input, String expected) {
assertEquals(expected, translateTo(page, input));
}
public static void assertTranslatesTo(SourcePage page, String input, String expected) {
assertEquals(expected, translateTo(page, input));
assertEquals("round trip", input, roundTrip(page, input));
}
public static void assertTranslatesTo(SourcePage page, String expected) throws Exception {
assertEquals(expected, translateTo(page));
}
public static void assertTranslatesTo(WikiPage page, String expected) throws Exception {
assertEquals(expected, translateTo(new WikiSourcePage(page)));
}
public static String translateTo(WikiPage page, String input) {
Symbol list = Parser.make(new ParsingPage(new WikiSourcePage(page)), input).parse();
return new HtmlTranslator(new WikiSourcePage(page), new ParsingPage(new WikiSourcePage(page))).translateTree(list);
}
public static String translateTo(SourcePage page, String input) {
Symbol list = Parser.make(new ParsingPage(page), input).parse();
return new HtmlTranslator(page, new ParsingPage(page)).translateTree(list);
}
public static String roundTrip(SourcePage page, String input) {
Symbol list = Parser.make(new ParsingPage(page), input, SymbolProvider.refactoringProvider).parse();
return new WikiTranslator(page).translateTree(list);
}
public static String translateToHtml(WikiPage page, String input, VariableSource variableSource) {
Symbol list = Parser.make(new ParsingPage(new WikiSourcePage(page), variableSource), input, SymbolProvider.wikiParsingProvider).parse();
return new HtmlTranslator(new WikiSourcePage(page), new ParsingPage(new WikiSourcePage(page))).translateTree(list);
}
public static String translateTo(WikiPage page) throws Exception {
return translateTo(new WikiSourcePage(page));
}
public static String translateTo(SourcePage page, VariableSource variableSource) throws Exception {
return new HtmlTranslator(page, new ParsingPage(page)).translateTree(Parser.make(new ParsingPage(page, variableSource), page.getContent(), SymbolProvider.wikiParsingProvider).parse());
}
public static String translateTo(SourcePage page) throws Exception {
return new HtmlTranslator(page, new ParsingPage(page)).translateTree(Parser.make(new ParsingPage(page), page.getContent()).parse());
}
public static void assertParses(String input, String expected) throws Exception {
WikiPage page = new TestRoot().makePage("TestPage", input);
Symbol result = parse(page, input);
assertEquals(expected, serialize(result));
}
public static Symbol parse(WikiPage page) throws Exception {
return Parser.make(new ParsingPage(new WikiSourcePage(page)), page.getData().getContent()).parse();
}
public static Symbol parse(WikiPage page, String input) {
return Parser.make(new ParsingPage(new WikiSourcePage(page)), input).parse();
}
public static String serialize(Symbol symbol) {
StringBuilder result = new StringBuilder();
result.append(symbol.getType() != null ? symbol.getType().toString() : "?no type?");
int i = 0;
for (Symbol child : symbol.getChildren()) {
result.append(i == 0 ? "[" : ", ");
result.append(serialize(child));
i++;
}
if (i > 0) result.append("]");
return result.toString();
}
public static String serializeContent(Symbol symbol) {
StringBuilder result = new StringBuilder();
if (symbol.getContent() != null) result.append(symbol.getContent());
for (Symbol child : symbol.getChildren()) result.append(serializeContent(child));
return result.toString();
}
public static String metaHtml(String message) {
return " ";
}
public static String tableWithCell(String cellContent) {
return tableWithCellAndRow(cellContent, "");
}
public static String tableWithCells(String[] cellContent) {
StringBuilder cells = new StringBuilder();
for (String cell : cellContent) {
if (cells.length() > 0) cells.append("").append(HtmlElement.endl).append("\t\t");
cells.append(cell);
}
return tableWithCellAndRow(cells.toString(), " ");
}
public static String tableWithCellAndRow(String cellContent, String firstRow) {
return nestedTableWithCellAndRow(cellContent, firstRow) + HtmlElement.endl;
}
public static String nestedTableWithCellAndRow(String cellContent, String firstRow) {
StringBuilder tableWithCellAndRow = new StringBuilder();
tableWithCellAndRow.append("").append(HtmlElement.endl)
.append("\t").append(firstRow).append(HtmlElement.endl)
.append("\t\t").append(cellContent).append(" ").append(HtmlElement.endl)
.append("\t").append(HtmlElement.endl).append("
");
return tableWithCellAndRow.toString();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy