blob: 3d6c9d1b67c73a3b3126dfa191912ef589951b86 [file] [log] [blame]
Fred Drake13634cf2000-06-29 19:17:04 +00001# test the invariant that
2# iff a==b then hash(a)==hash(b)
3#
4
Fred Drake97656a12001-05-18 21:45:35 +00005import unittest
Barry Warsaw04f357c2002-07-23 19:04:11 +00006from test import test_support
Fred Drake13634cf2000-06-29 19:17:04 +00007
8
Fred Drake97656a12001-05-18 21:45:35 +00009class HashEqualityTestCase(unittest.TestCase):
10
11 def same_hash(self, *objlist):
Fred Drakeacb117e2001-05-18 21:50:02 +000012 # Hash each object given and fail if
13 # the hash values are not all the same.
Fred Drake97656a12001-05-18 21:45:35 +000014 hashed = map(hash, objlist)
15 for h in hashed[1:]:
16 if h != hashed[0]:
Walter Dörwald70a6b492004-02-12 17:35:32 +000017 self.fail("hashed values differ: %r" % (objlist,))
Fred Drake97656a12001-05-18 21:45:35 +000018
19 def test_numeric_literals(self):
20 self.same_hash(1, 1L, 1.0, 1.0+0.0j)
21
22 def test_coerced_integers(self):
23 self.same_hash(int(1), long(1), float(1), complex(1),
24 int('1'), float('1.0'))
25
26 def test_coerced_floats(self):
27 self.same_hash(long(1.23e300), float(1.23e300))
28 self.same_hash(float(0.5), complex(0.5, 0.0))
Fred Drake13634cf2000-06-29 19:17:04 +000029
30
Fred Drake2e2be372001-09-20 21:33:42 +000031def test_main():
32 test_support.run_unittest(HashEqualityTestCase)
33
34
35if __name__ == "__main__":
36 test_main()