MCPcopy Index your code
hub / github.com/python/cpython / test_diamond_inheritance

Method test_diamond_inheritance

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

Source from the content-addressed store, hash-verified

899 self.assertEqual(int(Frag()), 42)
900
901 def test_diamond_inheritance(self):
902 # Testing multiple inheritance special cases...
903 class A(object):
904 def spam(self): return "A"
905 self.assertEqual(A().spam(), "A")
906 class B(A):
907 def boo(self): return "B"
908 def spam(self): return "B"
909 self.assertEqual(B().spam(), "B")
910 self.assertEqual(B().boo(), "B")
911 class C(A):
912 def boo(self): return "C"
913 self.assertEqual(C().spam(), "A")
914 self.assertEqual(C().boo(), "C")
915 class D(B, C): pass
916 self.assertEqual(D().spam(), "B")
917 self.assertEqual(D().boo(), "B")
918 self.assertEqual(D.__mro__, (D, B, C, A, object))
919 class E(C, B): pass
920 self.assertEqual(E().spam(), "B")
921 self.assertEqual(E().boo(), "C")
922 self.assertEqual(E.__mro__, (E, C, B, A, object))
923 # MRO order disagreement
924 try:
925 class F(D, E): pass
926 except TypeError:
927 pass
928 else:
929 self.fail("expected MRO order disagreement (F)")
930 try:
931 class G(E, D): pass
932 except TypeError:
933 pass
934 else:
935 self.fail("expected MRO order disagreement (G)")
936
937 # see thread python-dev/2002-October/029035.html
938 def test_ex5_from_c3_switch(self):

Callers

nothing calls this directly

Calls 9

AClass · 0.70
BClass · 0.70
CClass · 0.70
DClass · 0.70
EClass · 0.70
assertEqualMethod · 0.45
spamMethod · 0.45
booMethod · 0.45
failMethod · 0.45

Tested by

no test coverage detected