equal
deleted
inserted
replaced
|
1 # test the invariant that |
|
2 # iff a==b then hash(a)==hash(b) |
|
3 # |
|
4 |
|
5 import unittest |
|
6 from test import test_support |
|
7 |
|
8 |
|
9 class HashEqualityTestCase(unittest.TestCase): |
|
10 |
|
11 def same_hash(self, *objlist): |
|
12 # Hash each object given and fail if |
|
13 # the hash values are not all the same. |
|
14 hashed = map(hash, objlist) |
|
15 for h in hashed[1:]: |
|
16 if h != hashed[0]: |
|
17 self.fail("hashed values differ: %r" % (objlist,)) |
|
18 |
|
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)) |
|
29 |
|
30 |
|
31 def test_main(): |
|
32 test_support.run_unittest(HashEqualityTestCase) |
|
33 |
|
34 |
|
35 if __name__ == "__main__": |
|
36 test_main() |