def test_BaseDerived(self): mb = MyBase() d = Tf._TestDerived() md = MyDerived() self.assertEqual('unwrapped virtual', mb.TestCallVirtual()) self.assertEqual('cpp base', mb.Virtual4()) self.assertEqual('python derived v4', md.Virtual4()) self.assertEqual((False, 'python base'), Tf._TakesBase(mb)) self.assertEqual((True, 'cpp derived'), Tf._TakesBase(d)) self.assertEqual((True, 'python derived'), Tf._TakesBase(md)) self.assertEqual('python base', Tf._TakesConstBase(mb)) self.assertEqual('cpp derived', Tf._TakesConstBase(d)) self.assertEqual('python derived', Tf._TakesConstBase(md)) self.assertEqual('cpp derived', Tf._TakesDerived(d)) self.assertEqual('python derived', Tf._TakesDerived(md)) self.assertIs(Tf._ReturnsConstBase(md), md) self.assertIs(Tf._ReturnsBase(md), md) self.assertIs(Tf._ReturnsBaseRefPtr(md), md) try: Tf._TestBase().Virtual() assert False, 'calling pure virtual' except: pass
def test_Exception(self): with self.assertRaises(RuntimeError): Tf._TakesBase(Raiser()) with self.assertRaises(Tf.ErrorException) as cm: Tf._mightRaise(True) for x in cm.exception: self.assertTrue(len(repr(x))) with self.assertRaises(Tf.ErrorException): Tf.RaiseCodingError("some error") with self.assertRaises(Tf.ErrorException): Tf.RaiseRuntimeError("some error") with self.assertRaises(Tf.ErrorException): Tf._doErrors()
def test_Factory(self): df = Tf._DerivedFactory() self.assertIsInstance(df, Tf._TestDerived) self.assertTrue(hasattr(df, '__owner')) self.assertEqual((True, 'cpp derived'), Tf._TakesBase(df)) Tf._TakesReference(df) self.assertFalse(hasattr(df, '__owner')) self.assertIs(Tf._DerivedNullFactory(), None)