mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
bpo-26915: Test identity first in membership operation in index() and count() methods of collections.abc.Sequence (GH-503)
This commit is contained in:
parent
8f6b344d36
commit
d5d3249e8a
3 changed files with 19 additions and 6 deletions
|
@ -1309,20 +1309,29 @@ class TestCollectionABCs(ABCTestCase):
|
|||
class CustomEqualObject:
|
||||
def __eq__(self, other):
|
||||
return False
|
||||
class CustomSequence(list):
|
||||
def __contains__(self, value):
|
||||
return Sequence.__contains__(self, value)
|
||||
class CustomSequence(Sequence):
|
||||
def __init__(self, seq):
|
||||
self._seq = seq
|
||||
def __getitem__(self, index):
|
||||
return self._seq[index]
|
||||
def __len__(self):
|
||||
return len(self._seq)
|
||||
|
||||
nan = float('nan')
|
||||
obj = CustomEqualObject()
|
||||
seq = CustomSequence([nan, obj, nan])
|
||||
containers = [
|
||||
CustomSequence([nan, obj]),
|
||||
seq,
|
||||
ItemsView({1: nan, 2: obj}),
|
||||
ValuesView({1: nan, 2: obj})
|
||||
]
|
||||
for container in containers:
|
||||
for elem in container:
|
||||
self.assertIn(elem, container)
|
||||
self.assertEqual(seq.index(nan), 0)
|
||||
self.assertEqual(seq.index(obj), 1)
|
||||
self.assertEqual(seq.count(nan), 2)
|
||||
self.assertEqual(seq.count(obj), 1)
|
||||
|
||||
def assertSameSet(self, s1, s2):
|
||||
# coerce both to a real set then check equality
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue