MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_dynamics

Method test_dynamics

Lib/test/test_descr.py:1420–1485  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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)

Callers

nothing calls this directly

Calls 9

methodMethod · 0.95
reprFunction · 0.85
assertNotEqualMethod · 0.80
CClass · 0.70
DClass · 0.70
IClass · 0.70
assertEqualMethod · 0.45
assertNotHasAttrMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected