X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Ftests%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Ftests%2Fmarkdown%2FRunMarkdownTests.java;fp=bundles%2Forg.simantics.scl.compiler%2Ftests%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Ftests%2Fmarkdown%2FRunMarkdownTests.java;h=9971a020b879cd7d2e848967ca5e7bc6ee3bdac8;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scl.compiler/tests/org/simantics/scl/compiler/tests/markdown/RunMarkdownTests.java b/bundles/org.simantics.scl.compiler/tests/org/simantics/scl/compiler/tests/markdown/RunMarkdownTests.java new file mode 100644 index 000000000..9971a020b --- /dev/null +++ b/bundles/org.simantics.scl.compiler/tests/org/simantics/scl/compiler/tests/markdown/RunMarkdownTests.java @@ -0,0 +1,100 @@ +package org.simantics.scl.compiler.tests.markdown; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.StringReader; +import java.nio.charset.Charset; + +import org.simantics.scl.compiler.markdown.internal.MarkdownParser; +import org.simantics.scl.compiler.markdown.nodes.Node; + +public class RunMarkdownTests { + + public static int FAILED = 0; + public static int SUCCEEDED = 1; + public static int SKIPPED = 2; + + public static void main(String[] args) throws IOException { + BufferedReader reader = new BufferedReader( + new InputStreamReader( + RunMarkdownTests.class.getResourceAsStream("spec.txt"), + Charset.forName("UTF-8"))); + + StringBuilder in = new StringBuilder(); + StringBuilder out = new StringBuilder(); + int state = 0; + int testId = 0; + int passed = 0; + int failed = 0; + int skipped = 0; + while(true) { + String line = reader.readLine(); + if(line == null) + break; + switch(state) { + case 0: + if(line.equals("```````````````````````````````` example")) + ++state; + break; + case 1: + if(line.equals(".")) + ++state; + else { + if(in.length() > 0) + in.append('\n'); + in.append(line); + } + break; + case 2: + if(line.equals("````````````````````````````````")) { + ++testId; + int status = test(testId, in.toString(), out.toString()); + if(status == SUCCEEDED) + ++passed; + else if(status == FAILED) + ++failed; + else + ++skipped; + in = new StringBuilder(); + out = new StringBuilder(); + state = 0; + } + else { + if(out.length() > 0) + out.append('\n'); + out.append(line); + } + break; + } + } + + System.out.println("Passed: " + passed + "/" + testId); + System.out.println("Failed: " + failed + "/" + testId); + System.out.println("Skipped: " + skipped + "/" + testId); + } + + public static int test(int id, String in, String out) throws IOException { + MarkdownParser parser = new MarkdownParser(); + Node node = parser.parseDocument(new StringReader(in.replace('\u2192', '\t'))); + + String result = node.toHtml().replace('\t', '\u2192'); + + boolean passed = result.equals(out); + + if(!passed) { + System.out.println("Example " + id); // + (passed ? " passed" : " failed")); + System.out.println("---- in --------------------------------------------------------------------"); + System.out.println(in); + System.out.println("---- expected --------------------------------------------------------------"); + System.out.println(out); + System.out.println("---- actual ----------------------------------------------------------------"); + System.out.println(result); + System.out.println("----------------------------------------------------------------------------"); + System.out.println(); + } + + return passed ? SUCCEEDED : FAILED; + } + +}