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