# Copyright Bruno da Silva de Oliveira 2003. Use, modification and # distribution is subject to 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 unittest from _virtual import * class VirtualTest(unittest.TestCase): def testIt(self): class E(C): def f_abs(self): return 3 def dummy(self): # override should not work return 100 class F(C): def f(self): return 10 def name(self): return 'F' class G(D): def dummy(self): # override should not work return 100 e = E() f = F() self.assertEqual(e.f(), 3) self.assertEqual(call_f(e), 3) self.assertEqual(f.f(), 10) self.assertEqual(call_f(f), 10) self.assertEqual(e.get_name(), 'C') #self.assertEqual(e.get_name(), 'E') check this later c = C() c.bar(1) # ok c.bar('a') # ok self.assertRaises(TypeError, c.bar, 1.0) # test no_overrides d = G() self.assertEqual(e.dummy(), 100) self.assertEqual(call_dummy(e), 0) self.assertEqual(d.dummy(), 100) self.assertEqual(call_dummy(d), 0) if __name__ == '__main__': unittest.main()