mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
add some more contains tests on the builtin types
This commit is contained in:
parent
638ae9d0bb
commit
035a07e263
1 changed files with 47 additions and 0 deletions
|
@ -119,3 +119,50 @@ try:
|
||||||
check(0, "u'ab' in 'abc' did not raise error")
|
check(0, "u'ab' in 'abc' did not raise error")
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# A collection of tests on builtin sequence types
|
||||||
|
a = range(10)
|
||||||
|
for i in a:
|
||||||
|
check(i in a, "%s not in %s" % (`i`, `a`))
|
||||||
|
check(16 not in a, "16 not in %s" % `a`)
|
||||||
|
check(a not in a, "%s not in %s" % (`a`, `a`))
|
||||||
|
|
||||||
|
a = tuple(a)
|
||||||
|
for i in a:
|
||||||
|
check(i in a, "%s not in %s" % (`i`, `a`))
|
||||||
|
check(16 not in a, "16 not in %s" % `a`)
|
||||||
|
check(a not in a, "%s not in %s" % (`a`, `a`))
|
||||||
|
|
||||||
|
class Deviant1:
|
||||||
|
"""Behaves strangely when compared
|
||||||
|
|
||||||
|
This class is designed to make sure that the contains code
|
||||||
|
works when the list is modified during the check.
|
||||||
|
"""
|
||||||
|
|
||||||
|
aLongList = range(15)
|
||||||
|
aShortList = range(5)
|
||||||
|
aList = aLongList
|
||||||
|
|
||||||
|
def __cmp__(self, other):
|
||||||
|
if other == 12:
|
||||||
|
self.aList = self.aShortList
|
||||||
|
return 1
|
||||||
|
|
||||||
|
check(Deviant1() not in Deviant1.aList, "Deviant1 failed")
|
||||||
|
|
||||||
|
class Deviant2:
|
||||||
|
"""Behaves strangely when compared
|
||||||
|
|
||||||
|
This class raises an exception during comparison. That in
|
||||||
|
turn causes the comparison to fail with a TypeError.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __cmp__(self, other):
|
||||||
|
if other == 4:
|
||||||
|
raise RuntimeError, "gotcha"
|
||||||
|
|
||||||
|
try:
|
||||||
|
check(Deviant2() not in a, "oops")
|
||||||
|
except TypeError:
|
||||||
|
pass
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue