1 package org.apache.maven.plugin.checkstyle;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import com.puppycrawl.tools.checkstyle.api.AuditEvent;
23 import com.puppycrawl.tools.checkstyle.api.LocalizedMessage;
24 import com.puppycrawl.tools.checkstyle.api.SeverityLevel;
25 import junit.framework.TestCase;
26
27 import java.io.File;
28 import java.util.HashMap;
29 import java.util.Iterator;
30 import java.util.Map;
31
32
33
34
35
36 public class CheckstyleReportListenerTest
37 extends TestCase
38 {
39 private Map listenerMap;
40
41
42 protected void setUp()
43 throws Exception
44 {
45 listenerMap = new HashMap();
46
47 CheckstyleReportListener listener = new CheckstyleReportListener( new File( "/source/path" ) );
48 listener.setSeverityLevelFilter( SeverityLevel.INFO );
49 listenerMap.put( listener.getSeverityLevelFilter(), listener );
50
51 listener = new CheckstyleReportListener( new File( "/source/path" ) );
52 listener.setSeverityLevelFilter( SeverityLevel.WARNING );
53 listenerMap.put( listener.getSeverityLevelFilter(), listener );
54
55 listener = new CheckstyleReportListener( new File( "/source/path" ) );
56 listener.setSeverityLevelFilter( SeverityLevel.ERROR );
57 listenerMap.put( listener.getSeverityLevelFilter(), listener );
58
59 listener = new CheckstyleReportListener( new File( "/source/path" ) );
60 listener.setSeverityLevelFilter( SeverityLevel.IGNORE );
61 listenerMap.put( listener.getSeverityLevelFilter(), listener );
62 }
63
64 public void testListeners()
65 {
66 fireAuditStarted( null );
67
68 AuditEvent event = new AuditEvent( this, "/source/path/file1", null );
69 fireFileStarted( event );
70 LocalizedMessage message = new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.INFO, null, getClass(), null );
71 fireAddError( new AuditEvent( this, "/source/path/file1", message ) );
72 fireFileFinished( event );
73
74 event = new AuditEvent( this, "/source/path/file2", null );
75 fireFileStarted( event );
76 message = new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.WARNING, null, getClass(), null );
77 fireAddError( new AuditEvent( this, "/source/path/file2", message ) );
78 fireAddError( new AuditEvent( this, "/source/path/file2", message ) );
79 fireFileFinished( event );
80
81 event = new AuditEvent( this, "/source/path/file3", null );
82 fireFileStarted( event );
83 message = new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.ERROR, null, getClass(), null );
84 fireAddError( new AuditEvent( this, "/source/path/file3", message ) );
85 fireAddError( new AuditEvent( this, "/source/path/file3", message ) );
86 fireAddError( new AuditEvent( this, "/source/path/file3", message ) );
87 fireFileFinished( event );
88
89 event = new AuditEvent( this, "/source/path/file4", null );
90 fireFileStarted( event );
91 message = new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.IGNORE, null, getClass(), null );
92 fireAddError( new AuditEvent( this, "/source/path/file4", message ) );
93 fireAddError( new AuditEvent( this, "/source/path/file4", message ) );
94 fireAddError( new AuditEvent( this, "/source/path/file4", message ) );
95 fireAddError( new AuditEvent( this, "/source/path/file4", message ) );
96 fireFileFinished( event );
97
98 fireAuditFinished( null );
99
100 CheckstyleReportListener listener = (CheckstyleReportListener) listenerMap.get( SeverityLevel.INFO );
101 CheckstyleResults results = listener.getResults();
102 assertEquals( "Test total files", 4, results.getFiles().size() );
103 assertEquals( "Test file count", 4, results.getFileCount() );
104 assertEquals( "test file violations", 1, results.getFileViolations( "file1" ).size() );
105 assertEquals( "test file severities", 1, results.getSeverityCount( "file1", SeverityLevel.INFO ) );
106 assertEquals( "test file severities", 0, results.getSeverityCount( "file1", SeverityLevel.WARNING ) );
107 assertEquals( "test file severities", 0, results.getSeverityCount( "file1", SeverityLevel.ERROR ) );
108 assertEquals( "test file severities", 0, results.getSeverityCount( "file1", SeverityLevel.IGNORE ) );
109
110 listener = (CheckstyleReportListener) listenerMap.get( SeverityLevel.WARNING );
111 results = listener.getResults();
112 assertEquals( "Test total files", 4, results.getFiles().size() );
113 assertEquals( "Test file count", 4, results.getFileCount() );
114 assertEquals( "test file violations", 2, results.getFileViolations( "file2" ).size() );
115 assertEquals( "test file severities", 0, results.getSeverityCount( "file2", SeverityLevel.INFO ) );
116 assertEquals( "test file severities", 2, results.getSeverityCount( "file2", SeverityLevel.WARNING ) );
117 assertEquals( "test file severities", 0, results.getSeverityCount( "file2", SeverityLevel.ERROR ) );
118 assertEquals( "test file severities", 0, results.getSeverityCount( "file2", SeverityLevel.IGNORE ) );
119
120 listener = (CheckstyleReportListener) listenerMap.get( SeverityLevel.ERROR );
121 results = listener.getResults();
122 assertEquals( "Test total files", 4, results.getFiles().size() );
123 assertEquals( "Test file count", 4, results.getFileCount() );
124 assertEquals( "test file violations", 3, results.getFileViolations( "file3" ).size() );
125 assertEquals( "test file severities", 0, results.getSeverityCount( "file3", SeverityLevel.INFO ) );
126 assertEquals( "test file severities", 0, results.getSeverityCount( "file3", SeverityLevel.WARNING ) );
127 assertEquals( "test file severities", 3, results.getSeverityCount( "file3", SeverityLevel.ERROR ) );
128 assertEquals( "test file severities", 0, results.getSeverityCount( "file3", SeverityLevel.IGNORE ) );
129
130 listener = (CheckstyleReportListener) listenerMap.get( SeverityLevel.IGNORE );
131 results = listener.getResults();
132 assertEquals( "Test total files", 4, results.getFiles().size() );
133 assertEquals( "Test file count", 4, results.getFileCount() );
134 assertEquals( "test file violations", 0, results.getFileViolations( "file4" ).size() );
135 assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.INFO ) );
136 assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.WARNING ) );
137 assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.ERROR ) );
138 assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.IGNORE ) );
139 }
140
141 private void fireAuditStarted( AuditEvent event )
142 {
143 for ( Iterator listeners = listenerMap.values().iterator(); listeners.hasNext(); )
144 {
145 CheckstyleReportListener listener = (CheckstyleReportListener) listeners.next();
146
147 listener.auditStarted( event );
148 }
149 }
150
151 private void fireAuditFinished( AuditEvent event )
152 {
153 for ( Iterator listeners = listenerMap.values().iterator(); listeners.hasNext(); )
154 {
155 CheckstyleReportListener listener = (CheckstyleReportListener) listeners.next();
156
157 listener.auditFinished( event );
158 }
159 }
160
161 private void fireFileStarted( AuditEvent event )
162 {
163 for ( Iterator listeners = listenerMap.values().iterator(); listeners.hasNext(); )
164 {
165 CheckstyleReportListener listener = (CheckstyleReportListener) listeners.next();
166
167 listener.fileStarted( event );
168 }
169 }
170
171 private void fireFileFinished( AuditEvent event )
172 {
173 for ( Iterator listeners = listenerMap.values().iterator(); listeners.hasNext(); )
174 {
175 CheckstyleReportListener listener = (CheckstyleReportListener) listeners.next();
176
177 listener.fileFinished( event );
178 }
179 }
180
181 private void fireAddError( AuditEvent event )
182 {
183 for ( Iterator listeners = listenerMap.values().iterator(); listeners.hasNext(); )
184 {
185 CheckstyleReportListener listener = (CheckstyleReportListener) listeners.next();
186
187 listener.addError( event );
188 }
189 }
190 }