from MiddleKit.Run.MiddleObject import MiddleObject
def assertBazIsObjRef(bar):
bazAttr = getattr(bar, '_baz')
assert isinstance(bazAttr, MiddleObject), \
'bazAttr=%r, type(bazAttr)=%r' % (bazAttr, type(bazAttr))
def test(store):
foos = store.fetchObjectsOfClass('Foo')
assert len(foos) == 2
foo1 = foos[0]
foo2 = foos[1]
bar = foo1.bar()
baz = foo1.bar().baz()
assert baz.x() == 5 # just to make sure we got what we expected
assertBazIsObjRef(bar)
# Now here's what we're really testing for:
#
# When we ask foo2 for bar(), it's baz attribute
# should still be a Python pointer, NOT a longint
# (e.g., unpacked obj ref)
#
# This was not the case earlier, because store.fetchObject()
# was _always_ calling store.fetchObjectsOfClass() instead of
# checking the in-memory object cache first.
bar = foo2.bar()
assertBazIsObjRef(bar)
if 0:
bazAttr = getattr(bar, '_baz')
assert isinstance(bazAttr, MiddleObject), \
'bazAttr=%r, type(bazAttr)=%r' % (bazAttr, type(bazAttr))
|