7 #include <objc/objc-runtime.h>
9 @interface Weak : TestRoot {
20 void *fn(void *arg __unused)
22 objc_registerThreadWithCollector();
33 value = [TestRoot new];
35 oldObject = [Weak new];
36 testassert(oldObject);
38 oldObject->value = value;
39 testassert(oldObject->value == value);
41 newObject = [oldObject copy];
42 testassert(newObject);
43 testassert(newObject->value == oldObject->value);
45 newObject->value = nil;
46 testassert(newObject->value == nil);
47 testassert(oldObject->value == value);
57 testassert(TestRootDealloc || TestRootFinalize);
59 #if defined(__OBJC_GC__) || __has_feature(objc_arc)
60 testassert(oldObject->value == nil);
62 testassert(oldObject->value != nil);
64 testassert(newObject->value == nil);
66 RELEASE_VAR(newObject);
67 RELEASE_VAR(oldObject);