From: Guido van Rossum Date: Thu, 18 Jan 2001 23:47:15 +0000 (+0000) Subject: Add test that ensures hash() of objects defining __cmp__ or __eq__ but X-Git-Tag: v2.1a1~143 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2312024eb734a82bd9f190d21a18f693c5815725;p=python Add test that ensures hash() of objects defining __cmp__ or __eq__ but not __hash__ raises TypeError. --- diff --git a/Lib/test/test_class.py b/Lib/test/test_class.py index 3bcbf1867b..b863152692 100644 --- a/Lib/test/test_class.py +++ b/Lib/test/test_class.py @@ -1,5 +1,6 @@ "Test the functionality of Python classes implementing operators." +from test_support import TestFailed testmeths = [ @@ -216,3 +217,25 @@ testme = ExtraTests() testme.spam testme.eggs = "spam, spam, spam and ham" del testme.cardinal + + +# Test correct errors from hash() on objects with comparisons but no __hash__ + +class C0: + pass + +hash(C0()) # This should work; the next two should raise TypeError + +class C1: + def __cmp__(self, other): return 0 + +try: hash(C1()) +except TypeError: pass +else: raise TestFailed, "hash(C1()) should raise an exception" + +class C2: + def __eq__(self, other): return 1 + +try: hash(C2()) +except TypeError: pass +else: raise TestFailed, "hash(C2()) should raise an exception"