]> gerrit.simantics Code Review - simantics/platform.git/blob - tests/org.simantics.scl.compiler.tests/src/org/simantics/scl/compiler/tests/markdown/MarkdownTests.java
Merge "Remove unused import in DeleteHandler"
[simantics/platform.git] / tests / org.simantics.scl.compiler.tests / src / org / simantics / scl / compiler / tests / markdown / MarkdownTests.java
1 package org.simantics.scl.compiler.tests.markdown;\r
2 \r
3 import java.io.BufferedReader;\r
4 import java.io.IOException;\r
5 import java.io.InputStreamReader;\r
6 import java.io.StringReader;\r
7 import java.nio.charset.Charset;\r
8 \r
9 import org.junit.Test;\r
10 import org.simantics.scl.compiler.markdown.internal.MarkdownParser;\r
11 import org.simantics.scl.compiler.markdown.nodes.Node;\r
12 \r
13 public class MarkdownTests {\r
14     \r
15     public static int FAILED = 0;\r
16     public static int SUCCEEDED = 1;\r
17     public static int SKIPPED = 2;\r
18     \r
19     @Test\r
20     public void markdownTests() throws IOException {\r
21         BufferedReader reader = new BufferedReader(\r
22                 new InputStreamReader(\r
23                         MarkdownTests.class.getResourceAsStream("spec.txt"),\r
24                         Charset.forName("UTF-8")));\r
25         \r
26         StringBuilder in = new StringBuilder();\r
27         StringBuilder out = new StringBuilder();\r
28         int state = 0;\r
29         int testId = 0;\r
30         int passed = 0;\r
31         int failed = 0;\r
32         int skipped = 0;\r
33         while(true) {\r
34             String line = reader.readLine();\r
35             if(line == null)\r
36                 break;\r
37             switch(state) {\r
38             case 0:\r
39                 if(line.equals("```````````````````````````````` example"))\r
40                     ++state;\r
41                 break;\r
42             case 1:\r
43                 if(line.equals("."))\r
44                     ++state;\r
45                 else {\r
46                     if(in.length() > 0)\r
47                         in.append('\n');\r
48                     in.append(line);\r
49                 }\r
50                 break;\r
51             case 2:\r
52                 if(line.equals("````````````````````````````````")) {\r
53                     ++testId;\r
54                     int status = test(testId, in.toString(), out.toString());\r
55                     if(status == SUCCEEDED)\r
56                         ++passed;\r
57                     else if(status == FAILED)\r
58                         ++failed;\r
59                     else\r
60                         ++skipped;\r
61                     in = new StringBuilder();\r
62                     out = new StringBuilder();\r
63                     state = 0;\r
64                 }\r
65                 else {\r
66                     if(out.length() > 0)\r
67                         out.append('\n');\r
68                     out.append(line);\r
69                 }\r
70                 break;\r
71             }\r
72         }\r
73         \r
74         System.out.println("Passed: " + passed + "/" + testId);\r
75         System.out.println("Failed: " + failed + "/" + testId);\r
76         System.out.println("Skipped: " + skipped + "/" + testId);\r
77     }\r
78 \r
79     public static int test(int id, String in, String out) throws IOException {\r
80         MarkdownParser parser = new MarkdownParser();\r
81         Node node = parser.parseDocument(new StringReader(in.replace('\u2192', '\t')));\r
82         \r
83         String result = node.toHtml().replace('\t', '\u2192');\r
84                 \r
85         boolean passed = result.equals(out);\r
86         \r
87         if(!passed) {\r
88             System.out.println("Example " + id); // + (passed ? " passed" : " failed"));\r
89             System.out.println("---- in --------------------------------------------------------------------");\r
90             System.out.println(in);\r
91             System.out.println("---- expected --------------------------------------------------------------");\r
92             System.out.println(out);\r
93             System.out.println("---- actual ----------------------------------------------------------------");\r
94             System.out.println(result);\r
95             System.out.println("----------------------------------------------------------------------------");\r
96             System.out.println();\r
97         }\r
98             \r
99         return passed ? SUCCEEDED : FAILED;\r
100     }\r
101     \r
102 }\r