| # 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 _virtual2 import * |
| |
| class Virtual2Test(unittest.TestCase): |
| |
| def testIt(self): |
| a = A() |
| self.assertEqual(a.f1(), 10) |
| b = B() |
| self.assertEqual(b.f1(), 10) |
| self.assertEqual(b.f2(), 20) |
| self.assertEqual(call_fs(b), 30) |
| self.assertEqual(call_f(a), 0) |
| self.assertEqual(call_f(b), 1) |
| nb = b.make_new() |
| na = a.make_new() |
| self.assertEqual(na.f1(), 10) |
| self.assertEqual(nb.f1(), 10) |
| self.assertEqual(nb.f2(), 20) |
| self.assertEqual(call_fs(nb), 30) |
| self.assertEqual(call_f(na), 0) |
| self.assertEqual(call_f(nb), 1) |
| class C(B): |
| def f1(self): return 1 |
| def f2(self): return 2 |
| def f(self): return 100 |
| |
| c = C() |
| self.assertEqual(call_fs(c), 3) |
| self.assertEqual(call_fs(c), 3) |
| self.assertEqual(call_f(c), 100) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |