]> gitweb.fperrin.net Git - DictionaryPC.git/blob - src/com/hughes/android/dictionary/parser/WikiParserTest.java
go
[DictionaryPC.git] / src / com / hughes / android / dictionary / parser / WikiParserTest.java
1 package com.hughes.android.dictionary.parser;
2
3 import junit.framework.TestCase;
4
5 public class WikiParserTest extends TestCase {
6   
7   public void testSimple() {
8     final String text =
9       "Hi" + "\n" +
10       "Hello ''thad'' you're <!-- not --> '''pretty''' cool '''''over''''' there." + "\n" +
11       "hi <!--" + "\n" +
12       "multi-line" + "\n" +
13       "# comment -->" + "\n" +
14       "" + "\n" +
15       "# li" + "\n" +
16       "# li2" + "\n" +
17       "## li2.2" + "\n" +
18       "Hi again." + "\n" +
19       "here's [[some blah|some]] wikitext." + "\n" +
20       "here's a {{template|blah=2|blah2=3|" + "\n" +
21       "blah3=3}} and some more text." + "\n" +
22       "== Header 2 ==" + "\n" +
23       "=== {{header-template}} ===" + "\n";
24     
25     final String expected = "Hi Hello <i>thad</i> you're \n" +
26         "comment: not \n" +
27         " <b>pretty</b> cool <b><i>over</b></i> there. hi \n" +
28         "comment:\n" +
29         "multi-line\n" +
30         "# comment \n" +
31         "\n" +
32         "\n" +
33         "# li\n" +
34         " # li2\n" +
35         " ## li2.2\n" +
36         " Hi again. here's [[some]] wikitext. here's a \n" +
37         "template:template\n" +
38         " and some more text. \n" +
39         "HEADER   Header 2 \n" +
40         " \n" +
41         "HEADER    \n" +
42         "template:header-template\n" +
43         " \n" +
44         " ";
45     final PrintWikiCallback callback = new PrintWikiCallback();
46     WikiParser.parse(text, callback);
47     assertEquals(expected, callback.builder.toString());
48     
49   }
50   
51   
52   static final class PrintWikiCallback implements WikiCallback {
53     final StringBuilder builder = new StringBuilder();
54
55     @Override
56     public void onComment(String text) {
57       builder.append("\ncomment:").append(text).append("\n");
58     }
59
60     @Override
61     public void onFormatBold(boolean boldOn) {
62       builder.append(boldOn ? "<b>" : "</b>");
63     }
64
65     @Override
66     public void onFormatItalic(boolean italicOn) {
67       builder.append(italicOn ? "<i>" : "</i>");
68     }
69
70     @Override
71     public void onWikiLink(String[] args) {
72       builder.append("[[").append(args[args.length - 1]).append("]]");
73     }
74
75     @Override
76     public void onTemplate(String[][] args) {
77       builder.append("\ntemplate:").append(args[0][0]).append("\n");
78     }
79
80     @Override
81     public void onText(String text) {
82       builder.append(text);
83     }
84
85     @Override
86     public void onHeadingStart(int depth) {
87       builder.append("\nHEADER");
88       for (int i = 0; i < depth; ++i) {
89         builder.append(" ");
90       }
91     }
92
93     @Override
94     public void onHeadingEnd(int depth) {
95       builder.append("\n");
96     }
97     
98     @Override
99     public void onNewLine() {
100       builder.append(" ");
101     }
102
103     @Override
104     public void onNewParagraph() {
105       builder.append("\n\n");
106     }
107
108     @Override
109     public void onListItemStart(String header, int[] section) {
110       builder.append(header);
111     }
112
113     @Override
114     public void onListItemEnd(String header, int[] section) {
115       builder.append("\n");
116     }
117
118     @Override
119     public void onUnterminated(String start, String rest) {
120       throw new RuntimeException("bad");
121     }
122
123     @Override
124     public void onInvalidHeaderEnd(String rest) {
125       throw new RuntimeException("bad");
126     }
127     
128   }
129   
130
131
132 }