import weakref

import python_weakref

def check(message, lhs, rhs):
    if lhs != rhs:
        raise RuntimeError(message, lhs, rhs)

callbacks = []
def callback(ref):
    callbacks.append(ref)

ts = python_weakref.TestStruct()

# plain weak reference
ts_ref = weakref.ref(ts)
check("deref'd weakref is not object", ts_ref() is ts, True)
check("wrong number of weak references", weakref.getweakrefcount(ts), 1)
ts_ref().x = 123

# delete the weakref
del ts_ref
check("wrong number of weak references", weakref.getweakrefcount(ts), 0)

# create it again
ts_ref = weakref.ref(ts)
check("wrong number of weak references", weakref.getweakrefcount(ts), 1)

# weak reference proxy with callback
ts_ref_cb = weakref.proxy(ts, callback)
check("wrong number of weak references", weakref.getweakrefcount(ts), 2)
# weakref proxy fails "is" but passes "=="
check("deref'd weakref != object", ts_ref_cb, ts)
check("weakref proxy not usable", ts_ref_cb.x, 123)

# delete object
check("callback was called", callbacks, [])
del ts
check("callback wasn't called", callbacks, [ts_ref_cb])
check("deref'd weakref is not None", ts_ref() is None, True)
