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

Method test_supers

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

Source from the content-addressed store, hash-verified

2654
2655 @unittest.expectedFailure # TODO: RUSTPYTHON
2656 def test_supers(self):
2657 # Testing super...
2658
2659 class A(object):
2660 def meth(self, a):
2661 return "A(%r)" % a
2662
2663 self.assertEqual(A().meth(1), "A(1)")
2664
2665 class B(A):
2666 def __init__(self):
2667 self.__super = super(B, self)
2668 def meth(self, a):
2669 return "B(%r)" % a + self.__super.meth(a)
2670
2671 self.assertEqual(B().meth(2), "B(2)A(2)")
2672
2673 class C(A):
2674 def meth(self, a):
2675 return "C(%r)" % a + self.__super.meth(a)
2676 C._C__super = super(C)
2677
2678 self.assertEqual(C().meth(3), "C(3)A(3)")
2679
2680 class D(C, B):
2681 def meth(self, a):
2682 return "D(%r)" % a + super(D, self).meth(a)
2683
2684 self.assertEqual(D().meth(4), "D(4)C(4)B(4)A(4)")
2685
2686 # Test for subclassing super
2687
2688 class mysuper(super):
2689 def __init__(self, *args):
2690 return super(mysuper, self).__init__(*args)
2691
2692 class E(D):
2693 def meth(self, a):
2694 return "E(%r)" % a + mysuper(E, self).meth(a)
2695
2696 self.assertEqual(E().meth(5), "E(5)D(5)C(5)B(5)A(5)")
2697
2698 class F(E):
2699 def meth(self, a):
2700 s = self.__super # == mysuper(F, self)
2701 return "F(%r)[%s]" % (a, s.__class__.__name__) + s.meth(a)
2702 F._F__super = mysuper(F)
2703
2704 self.assertEqual(F().meth(6), "F(6)[mysuper]E(6)D(6)C(6)B(6)A(6)")
2705
2706 # Make sure certain errors are raised
2707
2708 try:
2709 super(D, 42)
2710 except TypeError:
2711 pass
2712 else:
2713 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