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