mirror of
https://github.com/boostorg/python.git
synced 2026-01-20 16:52:15 +00:00
53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
import unittest
|
|
from polymorphism_ext import *
|
|
|
|
class PolymorphTest(unittest.TestCase):
|
|
|
|
def testReturnCpp(self):
|
|
|
|
# Python Created Object With Same Id As
|
|
# Cpp Created B Object
|
|
# b = B(872)
|
|
|
|
# Get Reference To Cpp Created B Object
|
|
a = getBCppObj()
|
|
|
|
# Python Created B Object and Cpp B Object
|
|
# Should have same result by calling f()
|
|
self.failUnlessEqual ('B::f()', a.f())
|
|
self.failUnlessEqual ('B::f()', call_f(a))
|
|
self.failUnlessEqual ('A::f()', call_f(A()))
|
|
|
|
def test_references(self):
|
|
# B is not exposed to Python
|
|
a = getBCppObj()
|
|
self.failUnlessEqual(type(a), A)
|
|
|
|
# C is exposed to Python
|
|
c = getCCppObj()
|
|
self.failUnlessEqual(type(c), C)
|
|
|
|
def test_factory(self):
|
|
self.failUnlessEqual(type(factory(0)), A)
|
|
self.failUnlessEqual(type(factory(1)), A)
|
|
self.failUnlessEqual(type(factory(2)), C)
|
|
|
|
def testReturnPy(self):
|
|
|
|
class D(A):
|
|
def f(self):
|
|
return 'D.f'
|
|
|
|
d = D()
|
|
|
|
self.failUnlessEqual ('D.f', d.f())
|
|
self.failUnlessEqual ('D.f', call_f(d))
|
|
|
|
if __name__ == "__main__":
|
|
|
|
# remove the option which upsets unittest
|
|
import sys
|
|
sys.argv = [ x for x in sys.argv if x != '--broken-auto-ptr' ]
|
|
|
|
unittest.main()
|