]> git.saurik.com Git - apple/objc4.git/blobdiff - test/weakcopy.m
objc4-437.tar.gz
[apple/objc4.git] / test / weakcopy.m
diff --git a/test/weakcopy.m b/test/weakcopy.m
new file mode 100644 (file)
index 0000000..7c550b9
--- /dev/null
@@ -0,0 +1,34 @@
+#include "test.h"
+#include <stdint.h>
+#include <string.h>
+#include <objc/objc-runtime.h>
+
+@interface Base {
+  @public
+    id isa;
+}
+@end
+@implementation Base
++(void)initialize { } 
++class { return self; }
+@end
+
+@interface Weak : Base {
+  @public
+    __weak id value;
+}
+@end
+@implementation Weak
+@end
+
+int main()
+{
+    Base *value = class_createInstance([Base class], 0);
+    Weak *oldObject = class_createInstance([Weak class], 0);
+    oldObject->value = value;
+    Weak *newObject = object_copy(oldObject, 0);
+    testassert(newObject->value == oldObject->value);
+    newObject->value = nil;
+    succeed(__FILE__);
+    return 0;
+}