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