View Javadoc

1   package org.apache.maven.plugin.checkstyle;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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   * @author Edwin Punzalan
33   * @version $Id: CheckstyleReportListenerTest.html 816663 2012-05-08 14:00:13Z hboutemy $
34   */
35  public class CheckstyleReportListenerTest
36      extends TestCase
37  {
38      private Map<SeverityLevel, CheckstyleReportListener> listenerMap;
39  
40      /** {@inheritDoc} */
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 }