diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-07-27 14:24:46 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2010-07-27 17:23:47 -0300 |
commit | 21460348ae4a73877ecbcc610d5ccd66a390d0c1 (patch) | |
tree | 30eca97f07cf325d8397958ff760b02244c660d3 /tests/samplebinding/duck_punching_test.py | |
parent | 7bd306347b8d55343e783a340f8bdc723111944f (diff) |
BindingManager destructor now asserts if the wrapper map is empty.
The assertion is only used in debug mode. The duck punching test
was altered to avoid failing when run with debug. Check the
duck punching test file for a better explanation.
Also added a debug helper method "showWrapperMap" to the binding
manager, it shows the contents of the C pointer to Python wrapper
mapping.
Reviewed by Luciano Wolf <luciano.wolf@openbossa.org>
Reviewed by Renato Araújo <renato.filho@openbossa.org>
Diffstat (limited to 'tests/samplebinding/duck_punching_test.py')
-rw-r--r-- | tests/samplebinding/duck_punching_test.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/tests/samplebinding/duck_punching_test.py b/tests/samplebinding/duck_punching_test.py index cbf48c135..013e36468 100644 --- a/tests/samplebinding/duck_punching_test.py +++ b/tests/samplebinding/duck_punching_test.py @@ -68,6 +68,13 @@ class DuckPunchingTest(unittest.TestCase): self.assertEqual(result1, result2) self.assertEqual(result1, VirtualMethods.virtualMethod0(vm, pt, val, cpx, b) * self.multiplier) + # This is done to decrease the refcount of the vm object + # allowing the object wrapper to be deleted before the + # BindingManager. This is useful when compiling Shiboken + # for debug, since the BindingManager destructor has an + # assert that checks if the wrapper mapper is empty. + vm.virtualMethod0 = None + def testMonkeyPatchOnVirtualMethodWithInheritance(self): '''Injects new 'virtualMethod0' on an object that inherits from VirtualMethods and makes C++ call it.''' duck = Duck() @@ -90,6 +97,8 @@ class DuckPunchingTest(unittest.TestCase): self.assertEqual(result1, result2) self.assertEqual(result1, VirtualMethods.virtualMethod0(duck, pt, val, cpx, b) * self.multiplier) + duck.virtualMethod0 = None + def testMonkeyPatchOnMethodWithStaticAndNonStaticOverloads(self): '''Injects new 'exists' on a SimpleFile instance and makes C++ call it.''' simplefile = SimpleFile('foobar') @@ -112,6 +121,8 @@ class DuckPunchingTest(unittest.TestCase): simplefile.exists() self.assert_(self.duck_method_called) + simplefile.exists = None + def testMonkeyPatchOnMethodWithStaticAndNonStaticOverloadsWithInheritance(self): '''Injects new 'exists' on an object that inherits from SimpleFile and makes C++ call it.''' monkey = Monkey('foobar') @@ -134,6 +145,8 @@ class DuckPunchingTest(unittest.TestCase): monkey.exists() self.assert_(self.duck_method_called) + monkey.exists = None + if __name__ == '__main__': unittest.main() |