All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fitnesse.wikitext.test.ParserTestHelper Maven / Gradle / Ivy

There is a newer version: 20240707
Show newest version
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 "" + message + ""; } 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(HtmlElement.endl) .append("\t").append(HtmlElement.endl).append("
").append(cellContent).append("
"); return tableWithCellAndRow.toString(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy