python-2.5.2/win32/Lib/test/test_hash.py
changeset 0 ae805ac0140d
equal deleted inserted replaced
-1:000000000000 0:ae805ac0140d
       
     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()