]> git.saurik.com Git - apple/objc4.git/blob - test/sel.m
objc4-680.tar.gz
[apple/objc4.git] / test / sel.m
1 // TEST_CONFIG
2
3 #include "test.h"
4 #include <string.h>
5 #include <objc/objc-runtime.h>
6 #include <objc/objc-auto.h>
7
8 int main()
9 {
10 // Make sure @selector values are correctly fixed up
11 testassert(@selector(foo) == sel_registerName("foo"));
12
13 // sel_getName recognizes the zero SEL
14 testassert(0 == strcmp("<null selector>", sel_getName(0)));
15
16 // GC-ignored selectors.
17 #if __has_feature(objc_arc)
18
19 // ARC dislikes `@selector(retain)`
20
21 #else
22
23 # if defined(__i386__)
24 // sel_getName recognizes GC-ignored SELs
25 if (objc_collectingEnabled()) {
26 testassert(0 == strcmp("<ignored selector>",
27 sel_getName(@selector(retain))));
28 } else {
29 testassert(0 == strcmp("retain",
30 sel_getName(@selector(retain))));
31 }
32
33 // _objc_search_builtins() shouldn't crash on GC-ignored SELs
34 union {
35 SEL sel;
36 const char *ptr;
37 } u;
38 u.sel = @selector(retain);
39 testassert(@selector(retain) == sel_registerName(u.ptr));
40 # endif
41
42 #endif
43
44 succeed(__FILE__);
45 }