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