]> git.saurik.com Git - apple/objc4.git/blob - test/sel.m
f272f63dc336c7b9c1076dea8e527efd5c8bf27a
[apple/objc4.git] / test / sel.m
1 #include "test.h"
2 #include <string.h>
3 #include <objc/objc-runtime.h>
4 #include <objc/objc-auto.h>
5
6 int main()
7 {
8 // Make sure @selector values are correctly fixed up
9 testassert(@selector(foo) == sel_registerName("foo"));
10
11 // sel_getName recognizes the zero SEL
12 testassert(0 == strcmp("<null selector>", sel_getName(0)));
13
14 // sel_getName recognizes GC-ignored SELs
15 if (objc_collecting_enabled()) {
16 testassert(0 == strcmp("<ignored selector>",
17 sel_getName(@selector(retain))));
18 } else {
19 testassert(0 == strcmp("retain",
20 sel_getName(@selector(retain))));
21 }
22
23 // _objc_search_builtins() shouldn't crash on GC-ignored SELs
24 union {
25 SEL sel;
26 const char *ptr;
27 } u;
28 u.sel = @selector(retain);
29 testassert(@selector(retain) == sel_registerName(u.ptr));
30
31 succeed(__FILE__);
32 }