]> granicus.if.org Git - python/commitdiff
Add test for misbehaving rich comparisons (always returning 0) --
authorGuido van Rossum <guido@python.org>
Thu, 18 Jan 2001 15:55:59 +0000 (15:55 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 18 Jan 2001 15:55:59 +0000 (15:55 +0000)
these fall back to __cmp__.

Lib/test/test_richcmp.py

index 9c05e985009b287259910d99d9629207f7c9c620..83cb72b41b8c2edcf6490f649a598369044aa769 100644 (file)
@@ -1,6 +1,6 @@
 # Tests for rich comparisons
 
-from test_support import TestFailed
+from test_support import TestFailed, verify
 
 class Number:
 
@@ -167,11 +167,33 @@ def tabulate(c1=Number, c2=Number):
     print
     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():
     basic()
     tabulate()
     tabulate(c1=int)
     tabulate(c2=int)
     testvector()
+    misbehavin()
 
 main()