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

Method test_supers

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

Source from the content-addressed store, hash-verified

2748 dir(C()) # This used to segfault
2749
2750 def test_supers(self):
2751 # Testing super...
2752
2753 class A(object):
2754 def meth(self, a):
2755 return "A(%r)" % a
2756
2757 self.assertEqual(A().meth(1), "A(1)")
2758
2759 class B(A):
2760 def __init__(self):
2761 self.__super = super(B, self)
2762 def meth(self, a):
2763 return "B(%r)" % a + self.__super.meth(a)
2764
2765 self.assertEqual(B().meth(2), "B(2)A(2)")
2766
2767 class C(A):
2768 def meth(self, a):
2769 return "C(%r)" % a + self.__super.meth(a)
2770 C._C__super = super(C)
2771
2772 self.assertEqual(C().meth(3), "C(3)A(3)")
2773
2774 class D(C, B):
2775 def meth(self, a):
2776 return "D(%r)" % a + super(D, self).meth(a)
2777
2778 self.assertEqual(D().meth(4), "D(4)C(4)B(4)A(4)")
2779
2780 # Test for subclassing super
2781
2782 class mysuper(super):
2783 def __init__(self, *args):
2784 return super(mysuper, self).__init__(*args)
2785
2786 class E(D):
2787 def meth(self, a):
2788 return "E(%r)" % a + mysuper(E, self).meth(a)
2789
2790 self.assertEqual(E().meth(5), "E(5)D(5)C(5)B(5)A(5)")
2791
2792 class F(E):
2793 def meth(self, a):
2794 s = self.__super # == mysuper(F, self)
2795 return "F(%r)[%s]" % (a, s.__class__.__name__) + s.meth(a)
2796 F._F__super = mysuper(F)
2797
2798 self.assertEqual(F().meth(6), "F(6)[mysuper]E(6)D(6)C(6)B(6)A(6)")
2799
2800 # Make sure certain errors are raised
2801
2802 try:
2803 super(D, 42)
2804 except TypeError:
2805 pass
2806 else:
2807 self.fail("shouldn't allow super(D, 42)")

Callers

nothing calls this directly

Calls 15

superClass · 0.85
DDsubClass · 0.85
AClass · 0.70
BClass · 0.70
CClass · 0.70
DClass · 0.70
EClass · 0.70
mysuperClass · 0.70
FClass · 0.70
assertEqualMethod · 0.45
methMethod · 0.45
failMethod · 0.45

Tested by

no test coverage detected