1 package org.apache.maven.doxia.parser;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.doxia.AbstractModuleTest;
23 import org.apache.maven.doxia.sink.WellformednessCheckingSink;
24
25 import org.apache.maven.doxia.sink.Sink;
26 import org.apache.maven.doxia.sink.SinkEventAttributeSet;
27 import org.apache.maven.doxia.sink.SinkEventElement;
28 import org.apache.maven.doxia.sink.TextSink;
29 import org.codehaus.plexus.util.IOUtil;
30 import org.junit.Assert;
31
32 import java.io.IOException;
33 import java.io.Reader;
34 import java.io.Writer;
35 import java.util.Iterator;
36
37
38
39
40
41
42
43
44
45
46 public abstract class AbstractParserTest
47 extends AbstractModuleTest
48 {
49
50
51
52
53
54 protected abstract Parser createParser();
55
56
57
58
59
60
61 protected String getOutputDir()
62 {
63 return "parser/";
64 }
65
66
67
68
69
70
71
72
73
74 public final void testParser()
75 throws IOException, ParseException
76 {
77 WellformednessCheckingSink sink = new WellformednessCheckingSink();
78
79 Reader reader = null;
80 try
81 {
82 reader = getTestReader( "test", outputExtension() );
83
84 createParser().parse( reader, sink );
85
86 assertTrue( "Parser output not well-formed, last offending element: "
87 + sink.getOffender(), sink.isWellformed() );
88 }
89 finally
90 {
91 IOUtil.close( reader );
92 }
93 }
94
95
96
97
98
99
100
101
102
103 public final void testDocument()
104 throws IOException, ParseException
105 {
106 Writer writer = null;
107 Reader reader = null;
108
109 try
110 {
111 writer = getTestWriter( "test", "txt" );
112
113 reader = getTestReader( "test", outputExtension() );
114
115 Sink sink = new TextSink( writer );
116
117 createParser().parse( reader, sink );
118 }
119 finally
120 {
121 IOUtil.close( reader );
122 IOUtil.close( writer );
123 }
124 }
125
126 protected void assertEquals( SinkEventElement element, String name, Object... args )
127 {
128 assertEquals( "Name of element doesn't match", name, element.getName() );
129 Assert.assertArrayEquals( "Arguments don't match", args, element.getArgs() );
130 }
131
132 protected void assertAttributeEquals( SinkEventElement element, String name, String attr, String value )
133 {
134 assertEquals( name, element.getName() );
135 SinkEventAttributeSet atts = (SinkEventAttributeSet) element.getArgs()[0];
136 assertEquals( value, atts.getAttribute( attr ) );
137 }
138
139 protected void assertEquals( Iterator<SinkEventElement> it, String... names )
140 {
141 for ( String name: names )
142 {
143 assertEquals( name, it.next().getName() );
144 }
145 }
146
147
148 }