]> git.wincent.com - WOTest.git/blob - WOTestSignalException.m
Fix object-to-pointer comparisons on Leopard
[WOTest.git] / WOTestSignalException.m
1 //
2 //  WOTestSignalException.m
3 //  WOTest
4 //
5 //  Created by Wincent Colaiuta on 22 October 2006.
6 //
7 //  Copyright 2006-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 "WOTestSignalException.h"
23
24 @implementation WOTestSignalException
25
26 + (WOTestSignalException *)exceptionWithSignal:(int)signal
27 {
28     NSString *reason = [NSString stringWithFormat:
29         @"a %@ signal was caught during execution: the most likely cause is a programming error in the software being tested; be "
30         @"aware that the reliability of the most recent test and all subsequent tests may be adversely affected", 
31         [self nameForSignal:signal]];
32     
33     NSDictionary *userInfo = [NSDictionary dictionaryWithObjectsAndKeys:
34         [NSNumber numberWithInt:signal], WOTestSignalExceptionSignalNumber, nil];
35     
36     return [[self alloc] initWithName:WOTestSignalExceptionName reason:reason userInfo:userInfo];
37 }
38
39 + (NSString *)nameForSignal:(int)sig
40 {
41     NSString *name = nil;
42     switch (sig)
43     {
44         case SIGILL:    name = @"SIGILL";   break;
45         case SIGTRAP:   name = @"SIGTRAP";  break;
46         case SIGABRT:   name = @"SIGABRT";  break;
47         case SIGEMT:    name = @"SIGEMT";   break;
48         case SIGFPE:    name = @"SIGFPE";   break;
49         case SIGBUS:    name = @"SIGBUS";   break;
50         case SIGSEGV:   name = @"SIGSEGV";  break;
51         case SIGSYS:    name = @"SIGSYS";   break;
52         case SIGXCPU:   name = @"SIGXCPU";  break;
53         case SIGXFSZ:   name = @"SIGXFSZ";  break;
54         case SIGUSR1:   name = @"SIGUSR1";  break;
55         case SIGUSR2:   name = @"SIGUSR2";  break;
56         default:        name = @"UNKNOWN";
57     }
58     return name;
59 }
60
61 @end
62
63 __attribute__((used)) __attribute__((visibility("default"))) NSString *WOTestSignalExceptionName = @"WOTestSignalException";
64 __attribute__((used)) __attribute__((visibility("default")))
65 NSString *WOTestSignalExceptionSignalNumber = @"WOTestSignalExceptionSignalNumber";