package gutenberg.pegdown.plugin;
import gutenberg.pegdown.AbstractPegdownTest;
import org.junit.Test;
import org.parboiled.common.Reference;
import org.pegdown.Extensions;
import org.pegdown.Parser;
import org.pegdown.PegDownProcessor;
import org.pegdown.ast.RootNode;
import org.pegdown.plugins.PegDownPlugins;
import java.io.IOException;
import static org.assertj.core.api.Assertions.assertThat;
public class GenericBoxPluginTest extends AbstractPegdownTest {
@Test
public void genericBox_simpleCase_ast_build() throws IOException {
String mkd = loadResource("genericBoxText.md").trim();
String ast = loadResource("genericBoxText.ast").trim();
check(null, mkd, ast);
}
@Test
public void generixBox_with_attributes_ast_build() throws IOException {
String mkd = loadResource("genericBox-with-attributesText.md").trim();
String ast = loadResource("genericBox-with-attributesText.ast").trim();
PegDownPlugins.Builder plugins = PegDownPlugins
.builder()
.withPlugin(AttributesPlugin.class);
check(plugins, mkd, ast);
}
private void check(PegDownPlugins.Builder extraPluginsBuilder, String markdown, String expectedAst) {
Reference<Parser> parserRef = new Reference<Parser>();
PegDownPlugins plugins =
(extraPluginsBuilder == null ? PegDownPlugins.builder() : extraPluginsBuilder)
.withPlugin(GenericBoxPlugin.class, parserRef)
.build();
// ---
PegDownProcessor processor = new PegDownProcessor(Extensions.ALL, plugins);
parserRef.set(processor.parser);
RootNode rootNode = processor.parseMarkdown(normalize(markdown).toCharArray());
String s = dumpAST(rootNode);
System.out.println("GenericBoxPluginTest.check::" + s);
assertThat(normalize(s.trim())).isEqualTo(normalize(expectedAst));
}
}