package de.neuland.jade4j.compiler; import de.neuland.jade4j.Jade4J; import de.neuland.jade4j.JadeConfiguration; import de.neuland.jade4j.TestFileHelper; import de.neuland.jade4j.filter.CDATAFilter; import de.neuland.jade4j.filter.PlainFilter; import de.neuland.jade4j.template.JadeTemplate; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.ArrayUtils; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import java.io.File; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import static org.junit.Assert.assertEquals; @RunWith(Parameterized.class) public class OriginalJadeTest { private static String[] ignoredCases = new String[]{"attrs", "attrs.js", "code.conditionals", "code.iteration", "comments", "escape-chars", "filters.coffeescript", "filters.less", "filters.markdown", "filters.stylus", "html", "include-only-text-body", "include-only-text", "include-with-text-head", "include-with-text", "mixin.blocks", "mixin.merge", "quotes", "script.whitespace", "scripts", "scripts.non-js", "source", "styles", "template", "text-block", "text", "vars", "yield-title", "doctype.default","comments.conditional","html5"}; private File file; public OriginalJadeTest(String file) { this.file = new File(TestFileHelper.getOriginalResourcePath(file)); } @Test public void shouldCompileJadeToHtml() throws Exception { JadeConfiguration jade = new JadeConfiguration(); jade.setMode(Jade4J.Mode.XHTML); // original jade uses xhtml by default jade.setFilter("plain", new PlainFilter()); jade.setFilter("cdata", new CDATAFilter()); JadeTemplate template = jade.getTemplate(file.getPath()); Writer writer = new StringWriter(); jade.renderTemplate(template, new HashMap<String, Object>(), writer); String html = writer.toString(); String expected = readFile(file.getPath().replace(".jade", ".html")).trim().replaceAll("\r", ""); assertEquals(file.getName(), expected, html.trim()); } private String readFile(String fileName) throws IOException { return FileUtils.readFileToString(new File(fileName)); } @Parameterized.Parameters(name="{0}") public static Collection<String[]> data() { File folder = new File(TestFileHelper.getOriginalResourcePath("")); Collection<File> files = FileUtils.listFiles(folder, new String[]{"jade"}, false); Collection<String[]> data = new ArrayList<String[]>(); for (File file : files) { if (!ArrayUtils.contains(ignoredCases, file.getName().replace(".jade", ""))) { data.add(new String[]{file.getName()}); } } return data; } }