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

Method test_slices

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

Source from the content-addressed store, hash-verified

3978 self.assertEqual(b.getfoo(), 24)
3979
3980 def test_slices(self):
3981 # Testing cases with slices and overridden __getitem__ ...
3982
3983 # Strings
3984 self.assertEqual("hello"[:4], "hell")
3985 self.assertEqual("hello"[slice(4)], "hell")
3986 self.assertEqual(str.__getitem__("hello", slice(4)), "hell")
3987 class S(str):
3988 def __getitem__(self, x):
3989 return str.__getitem__(self, x)
3990 self.assertEqual(S("hello")[:4], "hell")
3991 self.assertEqual(S("hello")[slice(4)], "hell")
3992 self.assertEqual(S("hello").__getitem__(slice(4)), "hell")
3993 # Tuples
3994 self.assertEqual((1,2,3)[:2], (1,2))
3995 self.assertEqual((1,2,3)[slice(2)], (1,2))
3996 self.assertEqual(tuple.__getitem__((1,2,3), slice(2)), (1,2))
3997 class T(tuple):
3998 def __getitem__(self, x):
3999 return tuple.__getitem__(self, x)
4000 self.assertEqual(T((1,2,3))[:2], (1,2))
4001 self.assertEqual(T((1,2,3))[slice(2)], (1,2))
4002 self.assertEqual(T((1,2,3)).__getitem__(slice(2)), (1,2))
4003 # Lists
4004 self.assertEqual([1,2,3][:2], [1,2])
4005 self.assertEqual([1,2,3][slice(2)], [1,2])
4006 self.assertEqual(list.__getitem__([1,2,3], slice(2)), [1,2])
4007 class L(list):
4008 def __getitem__(self, x):
4009 return list.__getitem__(self, x)
4010 self.assertEqual(L([1,2,3])[:2], [1,2])
4011 self.assertEqual(L([1,2,3])[slice(2)], [1,2])
4012 self.assertEqual(L([1,2,3]).__getitem__(slice(2)), [1,2])
4013 # Now do lists and __setitem__
4014 a = L([1,2,3])
4015 a[slice(1, 3)] = [3,2]
4016 self.assertEqual(a, [1,3,2])
4017 a[slice(0, 2, 1)] = [3,1]
4018 self.assertEqual(a, [3,1,2])
4019 a.__setitem__(slice(1, 3), [2,1])
4020 self.assertEqual(a, [3,2,1])
4021 a.__setitem__(slice(0, 2, 1), [2,3])
4022 self.assertEqual(a, [2,3,1])
4023
4024 def test_subtype_resurrection(self):
4025 # Testing resurrection of new-style instance...

Callers

nothing calls this directly

Calls 7

sliceClass · 0.85
SClass · 0.70
TClass · 0.70
LClass · 0.70
assertEqualMethod · 0.45
__getitem__Method · 0.45
__setitem__Method · 0.45

Tested by

no test coverage detected