| # 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 _basic import * |
| |
| class BasicExampleTest(unittest.TestCase): |
| |
| def testIt(self): |
| |
| # test virtual functions |
| class D(C): |
| def f(self, x=10): |
| return x+1 |
| |
| d = D() |
| c = C() |
| |
| self.assertEqual(c.f(), 20) |
| self.assertEqual(c.f(3), 6) |
| self.assertEqual(d.f(), 11) |
| self.assertEqual(d.f(3), 4) |
| self.assertEqual(call_f(c), 20) |
| self.assertEqual(call_f(c, 4), 8) |
| self.assertEqual(call_f(d), 11) |
| self.assertEqual(call_f(d, 3), 4) |
| |
| # test data members |
| def testValue(value): |
| self.assertEqual(c.value, value) |
| self.assertEqual(d.value, value) |
| self.assertEqual(get_value(c), value) |
| self.assertEqual(get_value(d), value) |
| testValue(1) |
| c.value = 30 |
| d.value = 30 |
| testValue(30) |
| self.assertEqual(c.const_value, 0) |
| self.assertEqual(d.const_value, 0) |
| def set_const_value(): |
| c.const_value = 12 |
| self.assertRaises(AttributeError, set_const_value) |
| |
| # test static data-members |
| def testStatic(value): |
| self.assertEqual(C.static_value, value) |
| self.assertEqual(c.static_value, value) |
| self.assertEqual(D.static_value, value) |
| self.assertEqual(d.static_value, value) |
| self.assertEqual(get_static(), value) |
| testStatic(3) |
| C.static_value = 10 |
| testStatic(10) |
| self.assertEqual(C.const_static_value, 100) |
| def set_const_static(): |
| C.const_static_value = 1 |
| self.assertRaises(AttributeError, set_const_static) |
| |
| # test static function |
| def test_mul(result, *args): |
| self.assertEqual(C.mul(*args), result) |
| self.assertEqual(c.mul(*args), result) |
| test_mul(16, 8, 2) |
| test_mul(6.0, 2.0, 3.0) |
| self.assertEqual(C.square(), 4) |
| self.assertEqual(c.square(), 4) |
| self.assertEqual(C.square(3), 9) |
| self.assertEqual(c.square(3), 9) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |