Add test for misbehaving rich comparisons (always returning 0) --

these fall back to __cmp__.
This commit is contained in:
Guido van Rossum 2001-01-18 15:55:59 +00:00
parent c4a6e8b65a
commit 9710bd5deb
1 changed files with 23 additions and 1 deletions

View File

@ -1,6 +1,6 @@
# Tests for rich comparisons # Tests for rich comparisons
from test_support import TestFailed from test_support import TestFailed, verify
class Number: class Number:
@ -167,11 +167,33 @@ def tabulate(c1=Number, c2=Number):
print print
print '*' * 50 print '*' * 50
def misbehavin():
class Misb:
def __lt__(self, other): return 0
def __gt__(self, other): return 0
def __eq__(self, other): return 0
def __le__(self, other): raise TestFailed, "This shouldn't happen"
def __ge__(self, other): raise TestFailed, "This shouldn't happen"
def __ne__(self, other): raise TestFailed, "This shouldn't happen"
def __cmp__(self, other): raise RuntimeError, "expected"
a = Misb()
b = Misb()
verify((a<b) == 0)
verify((a==b) == 0)
verify((a>b) == 0)
try:
print cmp(a, b)
except RuntimeError:
pass
else:
raise TestFailed, "cmp(Misb(), Misb()) didn't raise RuntimeError"
def main(): def main():
basic() basic()
tabulate() tabulate()
tabulate(c1=int) tabulate(c1=int)
tabulate(c2=int) tabulate(c2=int)
testvector() testvector()
misbehavin()
main() main()