(self)
| 1418 | self.assertRaises(TypeError, MyABC.a.__set__, u, 3) |
| 1419 | |
| 1420 | def test_dynamics(self): |
| 1421 | # Testing class attribute propagation... |
| 1422 | class D(object): |
| 1423 | pass |
| 1424 | class E(D): |
| 1425 | pass |
| 1426 | class F(D): |
| 1427 | pass |
| 1428 | D.foo = 1 |
| 1429 | self.assertEqual(D.foo, 1) |
| 1430 | # Test that dynamic attributes are inherited |
| 1431 | self.assertEqual(E.foo, 1) |
| 1432 | self.assertEqual(F.foo, 1) |
| 1433 | # Test dynamic instances |
| 1434 | class C(object): |
| 1435 | pass |
| 1436 | a = C() |
| 1437 | self.assertNotHasAttr(a, "foobar") |
| 1438 | C.foobar = 2 |
| 1439 | self.assertEqual(a.foobar, 2) |
| 1440 | C.method = lambda self: 42 |
| 1441 | self.assertEqual(a.method(), 42) |
| 1442 | C.__repr__ = lambda self: "C()" |
| 1443 | self.assertEqual(repr(a), "C()") |
| 1444 | C.__int__ = lambda self: 100 |
| 1445 | self.assertEqual(int(a), 100) |
| 1446 | self.assertEqual(a.foobar, 2) |
| 1447 | self.assertNotHasAttr(a, "spam") |
| 1448 | def mygetattr(self, name): |
| 1449 | if name == "spam": |
| 1450 | return "spam" |
| 1451 | raise AttributeError |
| 1452 | C.__getattr__ = mygetattr |
| 1453 | self.assertEqual(a.spam, "spam") |
| 1454 | a.new = 12 |
| 1455 | self.assertEqual(a.new, 12) |
| 1456 | def mysetattr(self, name, value): |
| 1457 | if name == "spam": |
| 1458 | raise AttributeError |
| 1459 | return object.__setattr__(self, name, value) |
| 1460 | C.__setattr__ = mysetattr |
| 1461 | with self.assertRaises(AttributeError): |
| 1462 | a.spam = "not spam" |
| 1463 | |
| 1464 | self.assertEqual(a.spam, "spam") |
| 1465 | class D(C): |
| 1466 | pass |
| 1467 | d = D() |
| 1468 | d.foo = 1 |
| 1469 | self.assertEqual(d.foo, 1) |
| 1470 | |
| 1471 | # Test handling of int*seq and seq*int |
| 1472 | class I(int): |
| 1473 | pass |
| 1474 | self.assertEqual("a"*I(2), "aa") |
| 1475 | self.assertEqual(I(2)*"a", "aa") |
| 1476 | self.assertEqual(2*I(3), 6) |
| 1477 | self.assertEqual(I(3)*2, 6) |
nothing calls this directly
no test coverage detected