001: package com.puppycrawl.tools.checkstyle;
002:
003: import java.io.File;
004:
005: import junit.framework.TestCase;
006:
007: import com.puppycrawl.tools.checkstyle.api.AuditEvent;
008: import com.puppycrawl.tools.checkstyle.api.AuditListener;
009: import com.puppycrawl.tools.checkstyle.api.CheckstyleException;
010: import com.puppycrawl.tools.checkstyle.api.Filter;
011: import com.puppycrawl.tools.checkstyle.api.LocalizedMessage;
012:
013: public class CheckerTest extends TestCase {
014: public void testDosBasedir() throws Exception {
015: Checker c = new Checker();
016:
017: c.setBasedir("c:/a\\b/./c\\..\\d");
018: assertEquals("C:\\a\\b\\d", c.getBasedir());
019: }
020:
021: public void testOsBasedir() throws Exception {
022: Checker c = new Checker();
023:
024: // we need something to create absolute path
025: // let's take testinputs.dir
026: String testinputs_dir = System.getProperty("testinputs.dir");
027:
028: if (!testinputs_dir.endsWith(File.separator)) {
029: testinputs_dir += File.separator;
030: }
031:
032: c.setBasedir(testinputs_dir + "indentation/./..\\coding\\");
033:
034: assertEquals(testinputs_dir + "coding", c.getBasedir());
035: }
036:
037: public void testDestroy() throws Exception {
038: DebugChecker c = new DebugChecker();
039: DebugAuditAdapter aa = new DebugAuditAdapter();
040: c.addListener(aa);
041: DebugFilter f = new DebugFilter();
042: c.addFilter(f);
043:
044: c.destroy(); // should remove al listeners and filters
045:
046: // Let's try fire some events
047: c.fireAuditStarted();
048: c.fireAuditFinished();
049: c.fireFileStarted("Some File Name");
050: c.fireFileFinished("Some File Name");
051:
052: LocalizedMessage[] msgs = new LocalizedMessage[1];
053: msgs[0] = new LocalizedMessage(0, 0, "a Bundle", "message.key",
054: new Object[] { "arg" }, null, getClass());
055: c.fireErrors("Some File Name", msgs);
056:
057: assertFalse("Checker.destroy() doesn't remove listeners.", aa
058: .wasCalled());
059: assertFalse("Checker.destroy() doesn't remove filters.", f
060: .wasCalled());
061: }
062:
063: public void testAddListener() throws Exception {
064: DebugChecker c = new DebugChecker();
065: DebugAuditAdapter aa = new DebugAuditAdapter();
066: c.addListener(aa);
067:
068: // Let's try fire some events
069: c.fireAuditStarted();
070: assertTrue("Checker.fireAuditStarted() doesn't call listener",
071: aa.wasCalled());
072:
073: aa.resetListener();
074: c.fireAuditFinished();
075: assertTrue("Checker.fireAuditFinished() doesn't call listener",
076: aa.wasCalled());
077:
078: aa.resetListener();
079: c.fireFileStarted("Some File Name");
080: assertTrue("Checker.fireFileStarted() doesn't call listener",
081: aa.wasCalled());
082:
083: aa.resetListener();
084: c.fireFileFinished("Some File Name");
085: assertTrue("Checker.fireFileFinished() doesn't call listener",
086: aa.wasCalled());
087:
088: aa.resetListener();
089: LocalizedMessage[] msgs = new LocalizedMessage[1];
090: msgs[0] = new LocalizedMessage(0, 0, "a Bundle", "message.key",
091: new Object[] { "arg" }, null, getClass());
092: c.fireErrors("Some File Name", msgs);
093: assertTrue("Checker.fireErrors() doesn't call listener", aa
094: .wasCalled());
095: }
096:
097: public void testRemoveListener() throws Exception {
098: DebugChecker c = new DebugChecker();
099: DebugAuditAdapter aa = new DebugAuditAdapter();
100: DebugAuditAdapter aa2 = new DebugAuditAdapter();
101: c.addListener(aa);
102: c.addListener(aa2);
103: c.removeListener(aa);
104:
105: // Let's try fire some events
106: c.fireAuditStarted();
107: assertTrue("Checker.fireAuditStarted() doesn't call listener",
108: aa2.wasCalled());
109: assertFalse(
110: "Checker.fireAuditStarted() does call removed listener",
111: aa.wasCalled());
112:
113: aa2.resetListener();
114: c.fireAuditFinished();
115: assertTrue("Checker.fireAuditFinished() doesn't call listener",
116: aa2.wasCalled());
117: assertFalse(
118: "Checker.fireAuditFinished() does call removed listener",
119: aa.wasCalled());
120:
121: aa2.resetListener();
122: c.fireFileStarted("Some File Name");
123: assertTrue("Checker.fireFileStarted() doesn't call listener",
124: aa2.wasCalled());
125: assertFalse(
126: "Checker.fireFileStarted() does call removed listener",
127: aa.wasCalled());
128:
129: aa2.resetListener();
130: c.fireFileFinished("Some File Name");
131: assertTrue("Checker.fireFileFinished() doesn't call listener",
132: aa2.wasCalled());
133: assertFalse(
134: "Checker.fireFileFinished() does call removed listener",
135: aa.wasCalled());
136:
137: aa2.resetListener();
138: LocalizedMessage[] msgs = new LocalizedMessage[1];
139: msgs[0] = new LocalizedMessage(0, 0, "a Bundle", "message.key",
140: new Object[] { "arg" }, null, getClass());
141: c.fireErrors("Some File Name", msgs);
142: assertTrue("Checker.fireErrors() doesn't call listener", aa2
143: .wasCalled());
144: assertFalse("Checker.fireErrors() does call removed listener",
145: aa.wasCalled());
146:
147: }
148:
149: public void testAddFilter() throws Exception {
150: DebugChecker c = new DebugChecker();
151: DebugFilter f = new DebugFilter();
152:
153: c.addFilter(f);
154:
155: // Let's try fire some events
156: // we do not call filter in fireAuditStarted() (fix for 1080343)
157: // c.fireAuditStarted();
158: // assertTrue("Checker.fireAuditStarted() doesn't call filter", f.wasCalled());
159:
160: // we do not call filter in fireAuditFinished() (fix for 1080343)
161: // f.resetFilter();
162: // c.fireAuditFinished();
163: // assertTrue("Checker.fireAuditFinished() doesn't call filter", f.wasCalled());
164:
165: // we do not call filter in fireFileStarted() (fix for 1080343)
166: // f.resetFilter();
167: // c.fireFileStarted("Some File Name");
168: // assertTrue("Checker.fireFileStarted() doesn't call filter", f.wasCalled());
169:
170: // we do not call filter in fireFileFinished() (fix for 1080343)
171: // f.resetFilter();
172: // c.fireFileFinished("Some File Name");
173: // assertTrue("Checker.fireFileFinished() doesn't call filter", f.wasCalled());
174:
175: f.resetFilter();
176: LocalizedMessage[] msgs = new LocalizedMessage[1];
177: msgs[0] = new LocalizedMessage(0, 0, "a Bundle", "message.key",
178: new Object[] { "arg" }, null, getClass());
179: c.fireErrors("Some File Name", msgs);
180: assertTrue("Checker.fireErrors() doesn't call filter", f
181: .wasCalled());
182: }
183:
184: public void testRemoveFilter() throws Exception {
185: DebugChecker c = new DebugChecker();
186: DebugFilter f = new DebugFilter();
187: DebugFilter f2 = new DebugFilter();
188: c.addFilter(f);
189: c.addFilter(f2);
190: c.removeFilter(f);
191:
192: // Let's try fire some events
193: // we do call filter in fireErrors() only (fix for 1080343)
194: // c.fireAuditStarted();
195: // assertTrue("Checker.fireAuditStarted() doesn't call filter", f2.wasCalled());
196: // assertFalse("Checker.fireAuditStarted() does call removed filter", f.wasCalled());
197:
198: // we do call filter in fireErrors() only (fix for 1080343)
199: // f2.resetFilter();
200: // c.fireAuditFinished();
201: // assertTrue("Checker.fireAuditFinished() doesn't call filter", f2.wasCalled());
202: // assertFalse("Checker.fireAuditFinished() does call removed filter", f.wasCalled());
203:
204: // we do call filter in fireErrors() only (fix for 1080343)
205: // f2.resetFilter();
206: // c.fireFileStarted("Some File Name");
207: // assertTrue("Checker.fireFileStarted() doesn't call filter", f2.wasCalled());
208: // assertFalse("Checker.fireFileStarted() does call removed filter", f.wasCalled());
209:
210: // we do call filter in fireErrors() only (fix for 1080343)
211: // f2.resetFilter();
212: // c.fireFileFinished("Some File Name");
213: // assertTrue("Checker.fireFileFinished() doesn't call filter", f2.wasCalled());
214: // assertFalse("Checker.fireFileFinished() does call removed filter", f.wasCalled());
215:
216: f2.resetFilter();
217: LocalizedMessage[] msgs = new LocalizedMessage[1];
218: msgs[0] = new LocalizedMessage(0, 0, "a Bundle", "message.key",
219: new Object[] { "arg" }, null, getClass());
220: c.fireErrors("Some File Name", msgs);
221: assertTrue("Checker.fireErrors() doesn't call filter", f2
222: .wasCalled());
223: assertFalse("Checker.fireErrors() does call removed filter", f
224: .wasCalled());
225:
226: }
227: }
228:
229: // Utility classes
230: class DebugChecker extends Checker {
231: public DebugChecker() throws CheckstyleException {
232: super ();
233: }
234:
235: public void fireAuditFinished() {
236: super .fireAuditFinished();
237: }
238:
239: public void fireAuditStarted() {
240: super .fireAuditStarted();
241: }
242: }
243:
244: class DebugAuditAdapter implements AuditListener {
245: /** keeps track of the number of errors */
246: private boolean mCalled;
247:
248: public boolean wasCalled() {
249: return mCalled;
250: }
251:
252: public void resetListener() {
253: mCalled = false;
254: }
255:
256: /** @see AuditListener */
257: public void addError(AuditEvent aEvt) {
258: mCalled = true;
259: }
260:
261: /** @see AuditListener */
262: public void addException(AuditEvent aEvt, Throwable aThrowable) {
263: mCalled = true;
264: }
265:
266: /** @see AuditListener */
267: public void auditStarted(AuditEvent aEvt) {
268: mCalled = true;
269: }
270:
271: /** @see AuditListener */
272: public void fileStarted(AuditEvent aEvt) {
273: mCalled = true;
274: }
275:
276: /** @see AuditListener */
277: public void auditFinished(AuditEvent aEvt) {
278: mCalled = true;
279: }
280:
281: /** @see AuditListener */
282: public void fileFinished(AuditEvent aEvt) {
283: mCalled = true;
284: }
285: }
286:
287: class DebugFilter implements Filter {
288: private boolean mCalled;
289:
290: public boolean accept(AuditEvent aEvent) {
291: mCalled = true;
292: return true;
293: }
294:
295: public boolean wasCalled() {
296: return mCalled;
297: }
298:
299: public void resetFilter() {
300: mCalled = false;
301: }
302: }
|