]> git.wincent.com - WOTest.git/blob - WOTestClass.h
6256fa4145620f7b89ea8d4786bc6bf64eef8016
[WOTest.git] / WOTestClass.h
1 //
2 //  WOTestClass.h
3 //  WOTest
4 //
5 //  Created by Wincent Colaiuta on 12 October 2004.
6 //
7 //  Copyright 2004-2007 Wincent Colaiuta.
8 //  This program is free software: you can redistribute it and/or modify
9 //  it under the terms of the GNU General Public License as published by
10 //  the Free Software Foundation, either version 3 of the License, or
11 //  (at your option) any later version.
12 //
13 //  This program is distributed in the hope that it will be useful,
14 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
15 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 //  GNU General Public License for more details.
17 //
18 //  You should have received a copy of the GNU General Public License
19 //  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 //
21
22 #import <Foundation/Foundation.h>
23
24 @interface WOTest : NSObject {
25
26     NSDate      *startDate;
27
28     unsigned    classesWithTests;
29     unsigned    classesWithoutTests;
30     unsigned    methodsWithTests;
31     unsigned    testsRun;
32     unsigned    testsPassed;
33     unsigned    testsFailed;
34     unsigned    uncaughtExceptions;
35
36     //! test sense inversion: should only be used during WOTest self-testing
37     unsigned    testsFailedExpected;
38     unsigned    testsPassedUnexpected;
39     BOOL        expectFailures;
40
41     //! low-level exception handling inversion: should only be used during WOTest self-testing
42     unsigned    lowLevelExceptionsExpected;
43     unsigned    lowLevelExceptionsUnexpected;
44     BOOL        expectLowLevelExceptions;
45
46     //! Optionally refrain from handling low level exceptions
47     BOOL        handlesLowLevelExceptions;
48
49     //! Internal use only: used for keeping track of whether low-level exception handlers have been installed or not
50     //! Necessary because tested methods may change the low-level-exception-catching status mid-test
51     BOOL        lowLevelExceptionHandlerInstalled;
52
53     //! 0 = mostly silent operation; 1 = verbose; 2 = very verbose
54     unsigned    verbosity;
55
56     //! Optionally trim leading path components when printing path names to console.
57     unsigned    trimInitialPathComponents;
58
59     //! Cache last reported path and last reported line number for use when printing warnings and errors which don't include file and line information
60     NSString    *lastReportedFile;
61     int         lastReportedLine;
62
63     //! Defaults to YES.
64     BOOL        warnsAboutSignComparisons;
65 }
66
67 #pragma mark -
68 #pragma mark Singleton pattern enforcement methods
69
70 /*! \name Singleton pattern enforcement methods
71 \startgroup */
72
73 + (WOTest *)sharedInstance;
74
75 /*! \endgroup */
76
77 #pragma mark -
78 #pragma mark Utility methods
79
80 /*! \name Utility methods
81     \startgroup */
82
83 /*! Returns an NSString based on sending the "description" selector to anObject, compressing whitespace and truncating if necessary at index and appending an ellipsis. Returns nil if anObject is nil. Optionally returns YES or NO indirectyl via /p didTruncate to indicate whether truncation actually occurred. Pass \p index of 0 to return an untruncated, uncompressed description. */
84 - (NSString *)description:(id)anObject truncatedAt:(unsigned)index didTruncate:(BOOL *)didTruncate;
85
86 /*! Seed the random number generator with current system time, in effect causing the random number generator to produce a different sequence of numbers on each run. The random value generator methods will output values that are equal to WO_TEST_VALUE (or WO_BIG_TEST_VALUE or WO_SMALL_TEST_VALUE) plus or minus a random offset up to WO_RANDOMIZATION_RANGE. If you do not explicitly seed the random number generator, the same seed will be used on each run. */
87 - (void)seedRandomNumberGenerator;
88
89 /*! Seed the random number generator with the value passed as seed. Pass 1 to generate a repeatable sequence of numbers on each run (see the random (3) man page for more information. */
90 - (void)seedRandomNumberGenerator:(unsigned long)seed;
91
92 /*! \endgroup */
93
94 #pragma mark -
95 #pragma mark Test-running methods
96
97 /*! \name Test-running test methods
98     \startgroup */
99
100 /*! Runs all tests currently visible in the runtime. Returns YES if all tests pass, NO if any test fails. */
101 - (BOOL)runAllTests;
102
103 /*! Returns YES if all tests pass, NO if any test fails. Raises an exception if className is nil. */
104 - (BOOL)runTestsForClassName:(NSString *)className;
105
106 /*! Returns YES if all tests pass, NO if any test fails. Raises an exception if aClass is nil. */
107 - (BOOL)runTestsForClass:(Class)aClass;
108
109 /*! Returns a list of class names (NSStrings) corresponding to all classes known to the runtime that conform to the WOTest protocol. */
110 - (NSArray *)testableClasses;
111
112 /*! Like the allTestableClasses method, returns a list of class names (NSStrings) corresponding to all classes known to the runtime that conform to the WOTest protocol, with the additional limitation that only classes belonging to the specified bundle are included. */
113 - (NSArray *)testableClassesFrom:(NSBundle *)aBundle;
114
115 /*! Given a class that conforms to the WOTest protocol, returns a list of method names (NSStrings) in that class that correspond to testable methods (in other words, method names that begin with the string "test"). */
116 - (NSArray *)testableMethodsFrom:(Class)aClass;
117
118 - (void)printTestResultsSummary;
119
120 //! Returns YES if there were no failures.
121 - (BOOL)testsWereSuccessful;
122
123 /*! \endgroup */
124
125 #pragma mark -
126 #pragma mark Growl support
127
128 - (void)growlNotifyTitle:(NSString *)title message:(NSString *)message isWarning:(BOOL)isWarning sticky:(BOOL)sticky;
129
130 #pragma mark -
131 #pragma mark Logging methods
132
133 //! \name Logging methods
134 //! \startgroup
135
136 //! Keep track of last known file and line number
137 - (void)cacheFile:(char *)path line:(int)line;
138
139 - (void)writeLastKnownLocation;
140
141 - (void)writePassed:(BOOL)passed inFile:(char *)path atLine:(int)line message:(NSString *)message, ...;
142
143 - (void)writeErrorInFile:(char *)path atLine:(int)line message:(NSString *)message, ...;
144
145 - (void)writeWarningInFile:(char *)path atLine:(int)line message:(NSString *)message, ...;
146
147 - (void)writeUncaughtException:(NSString *)info inFile:(char *)path atLine:(int)line;
148
149 - (void)writeStatusInFile:(char *)path atLine:(int)line message:(NSString *)message, ...;
150
151 - (void)writeStatus:(NSString *)message, ...;
152
153 - (void)writeWarning:(NSString *)message, ...;
154
155 - (void)writeError:(NSString *)message, ...;
156
157 //! \endgroup
158
159 #pragma mark -
160 #pragma mark Empty (do-nothing) test methods
161
162 /*! \name Empty (do-nothing) test methods
163     \startgroup */
164
165 /*! An empty test which always passes. */
166 - (void)passTestInFile:(char *)path atLine:(int)line;
167
168 /*! An empty test which always fails. */
169 - (void)failTestInFile:(char *)path atLine:(int)line;
170
171 /*! \endgroup */
172
173 #pragma mark -
174 #pragma mark Boolean test methods
175
176 /*! \name Boolean test methods
177     \startgroup */
178
179 - (void)testTrue:(BOOL)expr inFile:(char *)path atLine:(int)line;
180
181 - (void)testFalse:(BOOL)expr inFile:(char *)path atLine:(int)line;
182
183 /*! \endgroup */
184
185 #pragma mark -
186 #pragma mark NSValue-based tests
187
188 /*! \name NSValue-based tests
189     \startgroup */
190
191 - (void)testValue:(NSValue *)actual isEqualTo:(NSValue *)expected inFile:(char *)path atLine:(int)line;
192
193 - (void)testValue:(NSValue *)actual isNotEqualTo:(NSValue *)expected inFile:(char *)path atLine:(int)line;
194
195 - (void)testValue:(NSValue *)actual greaterThan:(NSValue *)expected inFile:(char *)path atLine:(int)line;
196
197 - (void)testValue:(NSValue *)actual notGreaterThan:(NSValue *)expected inFile:(char *)path atLine:(int)line;
198
199 - (void)testValue:(NSValue *)actual lessThan:(NSValue *)expected inFile:(char *)path atLine:(int)line;
200
201 - (void)testValue:(NSValue *)actual notLessThan:(NSValue *)expected inFile:(char *)path atLine:(int)line;
202
203 /*! \endgroup */
204
205 #pragma mark -
206 #pragma mark Pointer to void test methods
207
208 /*! \name Pointer to void test methods
209     \startgroup */
210
211 - (void)testNil:(void *)pointer inFile:(char *)path atLine:(int)line;
212
213 - (void)testNotNil:(void *)pointer inFile:(char *)path atLine:(int)line;
214
215 - (void)testPointer:(void *)actual isEqualTo:(void *)expected inFile:(char *)path atLine:(int)line;
216
217 - (void)testPointer:(void *)actual isNotEqualTo:(void *)expected inFile:(char *)path atLine:(int)line;
218
219 /*! \endgroup */
220
221 #pragma mark -
222 #pragma mark int test methods
223
224 /*! \name int test methods
225     \startgroup */
226
227 /*! The WO_TEST_IS_INT macro uses \@encode(typeof()) to pass a string encoding of the type. */
228 - (void)testIsInt:(char *)type inFile:(char *)path atLine:(int)line;
229
230 /*! The WO_TEST_IS_NOT_INT macro uses \@encode(typeof()) to pass a string encoding of the type. */
231 - (void)testIsNotInt:(char *)type inFile:(char *)path atLine:(int)line;
232
233 - (void)testIntPositive:(int)aInt inFile:(char *)path atLine:(int)line;
234
235 - (void)testIntNegative:(int)aInt inFile:(char *)path atLine:(int)line;
236
237 - (void)testIntZero:(int)aInt inFile:(char *)path atLine:(int)line;
238
239 - (void)testIntNotZero:(int)aInt inFile:(char *)path atLine:(int)line;
240
241 - (void)testInt:(int)actual isEqualTo:(int)expected inFile:(char *)path atLine:(int)line;
242
243 - (void)testInt:(int)actual isNotEqualTo:(int)expected inFile:(char *)path atLine:(int)line;
244
245 - (void)testInt:(int)actual greaterThan:(int)expected inFile:(char *)path atLine:(int)line;
246
247 - (void)testInt:(int)actual notGreaterThan:(int)expected inFile:(char *)path atLine:(int)line;
248
249 - (void)testInt:(int)actual lessThan:(int)expected inFile:(char *)path atLine:(int)line;
250
251 - (void)testInt:(int)actual notLessThan:(int)expected inFile:(char *)path atLine:(int)line;
252
253 /*! \endgroup */
254
255 #pragma mark -
256 #pragma mark unsigned test methods
257
258 /*! \name unsigned test methods
259     \startgroup */
260
261 /*! The WO_TEST_IS_UNSIGNED macro uses \@encode(typeof()) to pass a string encoding of the type. */
262 - (void)testIsUnsigned:(char *)type inFile:(char *)path atLine:(int)line;
263
264 /*! The WO_TEST_IS_NOT_UNSIGNED macro uses \@encode(typeof()) to pass a string encoding of the type. */
265 - (void)testIsNotUnsigned:(char *)type inFile:(char *)path atLine:(int)line;
266
267 - (void)testUnsignedZero:(unsigned)aUnsigned inFile:(char *)path atLine:(int)line;
268
269 - (void)testUnsignedNotZero:(unsigned)aUnsigned inFile:(char *)path atLine:(int)line;
270
271 - (void)testUnsigned:(unsigned)actual isEqualTo:(unsigned)expected inFile:(char *)path atLine:(int)line;
272
273 - (void)testUnsigned:(unsigned)actual isNotEqualTo:(unsigned)expected inFile:(char *)path atLine:(int)line;
274
275 - (void)testUnsigned:(unsigned)actual greaterThan:(unsigned)expected inFile:(char *)path atLine:(int)line;
276
277 - (void)testUnsigned:(unsigned)actual notGreaterThan:(unsigned)expected inFile:(char *)path atLine:(int)line;
278
279 - (void)testUnsigned:(unsigned)actual lessThan:(unsigned)expected inFile:(char *)path atLine:(int)line;
280
281 - (void)testUnsigned:(unsigned)actual notLessThan:(unsigned)expected inFile:(char *)path atLine:(int)line;
282
283 /*! \endgroup */
284
285 #pragma mark -
286 #pragma mark float test methods without error margins
287
288 /*! \name float test methods without error margins
289     \startgroup */
290
291 /*! The WO_TEST_IS_FLOAT macro uses \@encode(typeof()) to pass a string encoding of the type. */
292 - (void)testIsFloat:(char *)type inFile:(char *)path atLine:(int)line;
293
294 /*! The WO_TEST_IS_NOT_FLOAT macro uses \@encode(typeof()) to pass a string encoding of the type. */
295 - (void)testIsNotFloat:(char *)type inFile:(char *)path atLine:(int)line;
296
297 - (void)testFloatPositive:(float)aFloat inFile:(char *)path atLine:(int)line;
298
299 - (void)testFloatNegative:(float)aFloat inFile:(char *)path atLine:(int)line;
300
301 - (void)testFloatZero:(float)aFloat inFile:(char *)path atLine:(int)line;
302
303 - (void)testFloatNotZero:(float)aFloat inFile:(char *)path atLine:(int)line;
304
305 - (void)testFloat:(float)actual isEqualTo:(float)expected inFile:(char *)path atLine:(int)line;
306
307 - (void)testFloat:(float)actual isNotEqualTo:(float)expected inFile:(char *)path atLine:(int)line;
308
309 - (void)testFloat:(float)actual greaterThan:(float)expected inFile:(char *)path atLine:(int)line;
310
311 - (void)testFloat:(float)actual notGreaterThan:(float)expected inFile:(char *)path atLine:(int)line;
312
313 - (void)testFloat:(float)actual lessThan:(float)expected inFile:(char *)path atLine:(int)line;
314
315 - (void)testFloat:(float)actual notLessThan:(float)expected inFile:(char *)path atLine:(int)line;
316
317 /*! \endgroup */
318
319 #pragma mark -
320 #pragma mark float test methods with error margins
321
322 /*! \name float test methods with error margins
323     \startgroup */
324
325 - (void)testFloatPositive:(float)aFloat withinError:(float)error inFile:(char *)path atLine:(int)line;
326
327 - (void)testFloatNegative:(float)aFloat withinError:(float)error inFile:(char *)path atLine:(int)line;
328
329 - (void)testFloatZero:(float)aFloat withinError:(float)error inFile:(char *)path atLine:(int)line;
330
331 - (void)testFloatNotZero:(float)aFloat withinError:(float)error inFile:(char *)path atLine:(int)line;
332
333 - (void)testFloat:(float)actual isEqualTo:(float)expected withinError:(float)error inFile:(char *)path atLine:(int)line;
334
335 - (void)testFloat:(float)actual isNotEqualTo:(float)expected withinError:(float)error inFile:(char *)path atLine:(int)line;
336
337 - (void)testFloat:(float)actual greaterThan:(float)expected withinError:(float)error inFile:(char *)path atLine:(int)line;
338
339 - (void)testFloat:(float)actual notGreaterThan:(float)expected withinError:(float)error inFile:(char *)path atLine:(int)line;
340
341 - (void)testFloat:(float)actual lessThan:(float)expected withinError:(float)error inFile:(char *)path atLine:(int)line;
342
343 - (void)testFloat:(float)actual notLessThan:(float)expected withinError:(float)error inFile:(char *)path atLine:(int)line;
344
345 /*! \endgroup */
346
347 #pragma mark -
348 #pragma mark double test methods without error margins
349
350 /*! \name double test methods without error margins
351     \startgroup */
352
353 /*! The WO_TEST_IS_DOUBLE macro uses \@encode(typeof()) to pass a string encoding of the type. */
354 - (void)testIsDouble:(char *)type inFile:(char *)path atLine:(int)line;
355
356 /*! The WO_TEST_IS_NOT_DOUBLE macro uses \@encode(typeof()) to pass a string encoding of the type. */
357 - (void)testIsNotDouble:(char *)type inFile:(char *)path atLine:(int)line;
358
359 - (void)testDoublePositive:(double)aDouble inFile:(char *)path atLine:(int)line;
360
361 - (void)testDoubleNegative:(double)aDouble inFile:(char *)path atLine:(int)line;
362
363 - (void)testDoubleZero:(double)aDouble inFile:(char *)path atLine:(int)line;
364
365 - (void)testDoubleNotZero:(double)aDouble inFile:(char *)path atLine:(int)line;
366
367 - (void)testDouble:(double)actual isEqualTo:(double)expected inFile:(char *)path atLine:(int)line;
368
369 - (void)testDouble:(double)actual isNotEqualTo:(double)expected inFile:(char *)path atLine:(int)line;
370
371 - (void)testDouble:(double)actual greaterThan:(double)expected inFile:(char *)path atLine:(int)line;
372
373 - (void)testDouble:(double)actual notGreaterThan:(double)expected inFile:(char *)path atLine:(int)line;
374
375 - (void)testDouble:(double)actual lessThan:(double)expected inFile:(char *)path atLine:(int)line;
376
377 - (void)testDouble:(double)actual notLessThan:(double)expected inFile:(char *)path atLine:(int)line;
378
379 /*! \endgroup */
380
381 #pragma mark -
382 #pragma mark double test methods with error margins
383
384 /*! \name double test methods with error margins
385     \startgroup */
386
387 - (void)testDoublePositive:(double)aDouble withinError:(double)error inFile:(char *)path atLine:(int)line;
388
389 - (void)testDoubleNegative:(double)aDouble withinError:(double)error inFile:(char *)path atLine:(int)line;
390
391 - (void)testDoubleZero:(double)aDouble withinError:(double)error inFile:(char *)path atLine:(int)line;
392
393 - (void)testDoubleNotZero:(double)aDouble withinError:(double)error inFile:(char *)path atLine:(int)line;
394
395 - (void)testDouble:(double)actual isEqualTo:(double)expected withinError:(double)error inFile:(char *)path atLine:(int)line;
396
397 - (void)testDouble:(double)actual isNotEqualTo:(double)expected withinError:(double)error inFile:(char *)path atLine:(int)line;
398
399 - (void)testDouble:(double)actual greaterThan:(double)expected withinError:(double)error inFile:(char *)path atLine:(int)line;
400
401 - (void)testDouble:(double)actual notGreaterThan:(double)expected withinError:(double)error inFile:(char *)path atLine:(int)line;
402
403 - (void)testDouble:(double)actual lessThan:(double)expected withinError:(double)error inFile:(char *)path atLine:(int)line;
404
405 - (void)testDouble:(double)actual notLessThan:(double)expected withinError:(float)error inFile:(char *)path atLine:(int)line;
406
407 /*! \endgroup */
408
409 #pragma mark -
410 #pragma mark Object test methods
411
412 /*! \name Object test methods
413     \startgroup */
414
415 - (void)testObject:(id)actual isEqualTo:(id)expected inFile:(char *)path atLine:(int)line;
416
417 - (void)testObject:(id)actual isNotEqualTo:(id)expected inFile:(char *)path atLine:(int)line;
418
419 /*! \endgroup */
420
421 #pragma mark -
422 #pragma mark NSString test methods
423
424 /*! \name NSString test methods
425     \startgroup */
426
427 - (void)testString:(NSString *)actual isEqualTo:(NSString *)expected inFile:(char *)path atLine:(int)line;
428
429 - (void)testString:(NSString *)actual isNotEqualTo:(NSString *)expected inFile:(char *)path atLine:(int)line;
430
431 - (void)testString:(NSString *)actual hasPrefix:(NSString *)expected inFile:(char *)path atLine:(int)line;
432
433 - (void)testString:(NSString *)actual doesNotHavePrefix:(NSString *)expected inFile:(char *)path atLine:(int)line;
434
435 - (void)testString:(NSString *)actual hasSuffix:(NSString *)expected inFile:(char *)path atLine:(int)line;
436
437 - (void)testString:(NSString *)actual doesNotHaveSuffix:(NSString *)expected inFile:(char *)path atLine:(int)line;
438
439 - (void)testString:(NSString *)actual contains:(NSString *)expected inFile:(char *)path atLine:(int)line;
440
441 - (void)testString:(NSString *)actual doesNotContain:(NSString *)expected inFile:(char *)path atLine:(int)line;
442
443 /*! \endgroup */
444
445 #pragma mark -
446 #pragma mark NSArray test methods
447
448 /*! \name NSArray test methods
449     \startgroup */
450
451 - (void)testArray:(NSArray *)actual isEqualTo:(NSArray *)expected inFile:(char *)path atLine:(int)line;
452
453 - (void)testArray:(NSArray *)actual isNotEqualTo:(NSArray *)expected inFile:(char *)path atLine:(int)line;
454
455 /*! \endgroup */
456
457 #pragma mark -
458 #pragma mark NSDictionary test methods
459
460 /*! \name NSDictionary test methods
461     \startgroup */
462
463 - (void)testDictionary:(NSDictionary *)actual isEqualTo:(NSDictionary *)expected inFile:(char *)path atLine:(int)line;
464
465 - (void)testDictionary:(NSDictionary *)actual isNotEqualTo:(NSDictionary *)expected inFile:(char *)path atLine:(int)line;
466
467 /*! \endgroup */
468
469 #pragma mark -
470 #pragma mark Exception test methods
471
472 /*! \name Exception test methods
473     \startgroup */
474
475 - (void)testThrowsException:(id)exception inFile:(char *)path atLine:(int)line;
476
477 - (void)testDoesNotThrowException:(id)exception inFile:(char *)path atLine:(int)line;
478
479 - (void)testThrowsException:(id)exception named:(NSString *)name inFile:(char *)path atLine:(int)line;
480
481 - (void)testDoesNotThrowException:(id)exception named:(NSString *)name inFile:(char *)path atLine:(int)line;
482
483 /*! \endgroup */
484
485 #pragma mark -
486 #pragma mark Random value generator methods
487
488 /*! \name Random value generator methods
489     \startgroup */
490
491
492 - (int)anInt;
493 - (int)aPositiveInt;
494 - (int)aNegativeInt;
495 - (int)aZeroInt;
496 - (int)aBigInt;
497 - (int)aBigPositiveInt;
498 - (int)aBigNegativeInt;
499 - (int)aSmallInt;
500 - (int)aSmallPositiveInt;
501 - (int)aSmallNegativeInt;
502
503 - (unsigned)anUnsigned;
504 - (unsigned)aZeroUnsigned;
505 - (unsigned)aBigUnsigned;
506 - (unsigned)aSmallUnsigned;
507
508 - (float)aFloat;
509 - (float)aPositiveFloat;
510 - (float)aNegativeFloat;
511 - (float)aZeroFloat;
512 - (float)aBigFloat;
513 - (float)aBigPositiveFloat;
514 - (float)aBigNegativeFloat;
515 - (float)aSmallFloat;
516 - (float)aSmallPositiveFloat;
517 - (float)aSmallNegativeFloat;
518
519 - (double)aDouble;
520 - (double)aPositiveDouble;
521 - (double)aNegativeDouble;
522 - (double)aZeroDouble;
523 - (double)aBigDouble;
524 - (double)aBigPositiveDouble;
525 - (double)aBigNegativeDouble;
526 - (double)aSmallDouble;
527 - (double)aSmallPositiveDouble;
528 - (double)aSmallNegativeDouble;
529
530 /*! \endgroup */
531
532 #pragma mark -
533 #pragma mark Accessors
534
535 //! \name Accessors
536 //! \startgroup
537
538 - (NSDate *)startDate;
539 - (unsigned)classesWithTests;
540 - (unsigned)classesWithoutTests;
541 - (unsigned)methodsWithTests;
542 - (unsigned)testsRun;
543 - (unsigned)testsPassed;
544 - (unsigned)testsFailed;
545
546 // TODO: need sense inversion here as well (for uncaught exceptions) for self-testing purposes
547 - (unsigned)uncaughtExceptions;
548
549 - (unsigned)testsFailedExpected;
550 - (unsigned)testsPassedUnexpected;
551 - (BOOL)expectFailures;
552 - (void)setExpectFailures:(BOOL)aValue;
553
554 - (unsigned)lowLevelExceptionsExpected;
555 - (unsigned)lowLevelExceptionsUnexpected;
556 - (BOOL)expectLowLevelExceptions;
557 - (void)setExpectLowLevelExceptions:(BOOL)aValue;
558
559 - (BOOL)handlesLowLevelExceptions;
560 - (void)setHandlesLowLevelExceptions:(BOOL)aValue;
561
562 - (unsigned)verbosity;
563 - (void)setVerbosity:(unsigned)aVerbosity;
564
565 - (unsigned)trimInitialPathComponents;
566 - (void)setTrimInitialPathComponents:(unsigned)aTrimInitialPathComponents;
567
568 - (NSString *)lastReportedFile;
569 - (void)setLastReportedFile:(NSString *)aLastReportedFile;
570
571 - (BOOL)warnsAboutSignComparisons;
572 - (void)setWarnsAboutSignComparisons:(BOOL)aWarnsAboutSignComparisons;
573
574 //! \endgroup
575
576 @end