polymorphism.py

来自「Boost provides free peer-reviewed portab」· Python 代码 · 共 75 行

PY
75
字号
# Copyright David Abrahams 2004. Distributed under the Boost# Software License, Version 1.0. (See accompanying# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)import unittestfrom 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 test_return_py(self):      class X(A):         def f(self):            return 'X.f'      x = X()            self.failUnlessEqual ('X.f', x.f())      self.failUnlessEqual ('X.f', call_f(x))   def test_wrapper_downcast(self):      a = pass_a(D())      self.failUnlessEqual('D::g()', a.g())   def test_pure_virtual(self):      p = P()      self.assertRaises(RuntimeError, p.f)            q = Q()      self.failUnlessEqual ('Q::f()', q.f())            class R(P):         def f(self):            return 'R.f'      r = R()      self.failUnlessEqual ('R.f', r.f())                              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()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?