]> git.saurik.com Git - apple/objc4.git/blobdiff - test/xref.m
objc4-493.9.tar.gz
[apple/objc4.git] / test / xref.m
diff --git a/test/xref.m b/test/xref.m
new file mode 100644 (file)
index 0000000..3843064
--- /dev/null
@@ -0,0 +1,32 @@
+// TEST_CFLAGS -framework Foundation
+
+#include <Foundation/Foundation.h>
+#include <objc/runtime.h>
+#include <objc/objc-internal.h>
+
+#include "test.h"
+
+int main()
+{
+    // rdar://8350188 External references (handles)
+
+    id object = [NSObject new];
+    testassert(object);
+    
+    // STRONG
+    objc_xref_t xref = _object_addExternalReference(object, OBJC_XREF_STRONG);
+    testassert(xref);
+    testassert(_object_readExternalReference(xref) == object);
+    _object_removeExternalReference(xref);
+    // TODO: expect a crash if a stale xref is used.
+    
+    // WEAK
+    xref = _object_addExternalReference(object, OBJC_XREF_WEAK);
+    testassert(xref);
+    testassert(_object_readExternalReference(xref) == object);
+    _object_removeExternalReference(xref);
+    
+    [object release];
+
+    succeed(__FILE__);
+}