]> 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 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       "# {{template_in_list}}" + "\n" +
22       "## li2.2" + "\n" +
23       "Hi again." + "\n" +
24       "[[wikitext]]:[[wikitext]]" + "\n" +  // don't want this to trigger a list
25       "here's [[some blah|some]] wikitext." + "\n" +
26       "here's a {{template|this has an = sign|blah=2|blah2=3|" + "\n" +
27       "blah3=3,[[asdf]|[asdf asdf]|[asdf asdf asdf]],blah4=4}} and some more text." + "\n" +
28       "== Header 2 ==" + "\n" +
29       "{{some-func|blah={{nested-func|n2}}|blah2=asdf}}" + "\n" +
30       "{{unterminated}" + "\n" +
31 //      "==== Header 4 ====" + "\n" +
32 //      "===== Header 5 =====" + "\n" +
33       "=== {{header-template}} ===" + "\n";
34     
35     final String expected = "Hi Hello <i>thad</i> you're \n" +
36         "comment: not \n" +
37         " <b>pretty</b> cool <b><i>over</b></i> there. hi \n" +
38         "comment:\n" +
39         "multi-line\n" +
40         "# comment \n" +
41         "\n" +
42         "\n" +
43         " asdf\n" +
44         "LIST (#) li\n" +
45         "LIST (#) li2\n" +
46         "LIST (#) \n" +
47         "template:[template_in_list]{}\n" +
48         "\n" + 
49         "LIST (##) li2.2\n" +
50         "\n" +
51         " Hi again. [[wikitext]]:[[wikitext]] here's [[some]] wikitext. here's a \n" +
52         "template:[template, this has an = sign]{blah=2, blah2=3, blah3=3,[[asdf]|[asdf asdf]|[asdf asdf asdf]],blah4=4}\n" +
53         " and some more text.\n" +
54         "HEADER   Header 2 \n" +
55         " \n" +
56         "template:[some-func]{blah={{nested-func|n2}}, blah2=asdf}\n" +
57         " \n" +
58         "template:[unterminate]{}" + "\n" +
59         "\n" +
60         "HEADER    \n" +
61         "template:[header-template]{}\n" +
62         " \n" +
63         " ";
64     final PrintWikiCallback callback = new PrintWikiCallback();
65     WikiParser.parse(text, callback);
66     assertEquals(expected, callback.builder.toString());
67     
68   }
69   
70   
71   static final class PrintWikiCallback implements WikiCallback {
72     final StringBuilder builder = new StringBuilder();
73
74     @Override
75     public void onComment(String text) {
76       builder.append("\ncomment:").append(text).append("\n");
77     }
78
79     @Override
80     public void onFormatBold(boolean boldOn) {
81       builder.append(boldOn ? "<b>" : "</b>");
82     }
83
84     @Override
85     public void onFormatItalic(boolean italicOn) {
86       builder.append(italicOn ? "<i>" : "</i>");
87     }
88
89     @Override
90     public void onWikiLink(String[] args) {
91       builder.append("[[").append(args[args.length - 1]).append("]]");
92     }
93
94     @Override
95     public void onTemplate(final List<String> positionalArgs, final Map<String,String> namedArgs) {
96       builder.append("\ntemplate:").append(positionalArgs).append(namedArgs).append("\n");
97     }
98
99     @Override
100     public void onText(String text) {
101       builder.append(text);
102     }
103
104     @Override
105     public void onHeadingStart(int depth) {
106       builder.append("\nHEADER");
107       for (int i = 0; i < depth; ++i) {
108         builder.append(" ");
109       }
110     }
111
112     @Override
113     public void onHeadingEnd(int depth) {
114       builder.append("\n");
115     }
116     
117     @Override
118     public void onNewLine() {
119       builder.append(" ");
120     }
121
122     @Override
123     public void onNewParagraph() {
124       builder.append("\n\n");
125     }
126
127     @Override
128     public void onListItemStart(String header, int[] section) {
129       builder.append("\n").append("LIST (").append(header).append(")");
130     }
131
132     @Override
133     public void onListItemEnd(String header, int[] section) {
134       //builder.append("\n");
135     }
136
137     @Override
138     public void onUnterminated(String start, String rest) {
139       //throw new RuntimeException("bad");
140     }
141
142     @Override
143     public void onInvalidHeaderEnd(String rest) {
144       throw new RuntimeException("bad");
145     }
146     
147   }
148   
149
150
151 }