]> git.saurik.com Git - apple/objc4.git/blobdiff - test/sel.m
objc4-437.tar.gz
[apple/objc4.git] / test / sel.m
diff --git a/test/sel.m b/test/sel.m
new file mode 100644 (file)
index 0000000..f272f63
--- /dev/null
@@ -0,0 +1,32 @@
+#include "test.h"
+#include <string.h>
+#include <objc/objc-runtime.h>
+#include <objc/objc-auto.h>
+
+int main()
+{
+    // Make sure @selector values are correctly fixed up
+    testassert(@selector(foo) == sel_registerName("foo"));
+
+    // sel_getName recognizes the zero SEL
+    testassert(0 == strcmp("<null selector>", sel_getName(0)));
+
+    // sel_getName recognizes GC-ignored SELs
+    if (objc_collecting_enabled()) {
+        testassert(0 == strcmp("<ignored selector>", 
+                               sel_getName(@selector(retain))));
+    } else {
+        testassert(0 == strcmp("retain", 
+                               sel_getName(@selector(retain))));
+    }
+
+    // _objc_search_builtins() shouldn't crash on GC-ignored SELs
+    union {
+        SEL sel;
+        const char *ptr;
+    } u;
+    u.sel = @selector(retain);
+    testassert(@selector(retain) == sel_registerName(u.ptr));
+
+    succeed(__FILE__);
+}