diff --git a/Lib/test/test_hash.py b/Lib/test/test_hash.py
index d5ac026..befde74 100644
--- a/Lib/test/test_hash.py
+++ b/Lib/test/test_hash.py
@@ -3,21 +3,29 @@
 #
 
 import test_support
+import unittest
 
 
-def same_hash(*objlist):
-    # hash each object given an raise TestFailed if
-    # the hash values are not all the same
-    hashed = map(hash, objlist)
-    for h in hashed[1:]:
-        if h != hashed[0]:
-            raise TestFailed, "hashed values differ: %s" % `objlist`
+class HashEqualityTestCase(unittest.TestCase):
+
+    def same_hash(self, *objlist):
+        # hash each object given an raise TestFailed if
+        # the hash values are not all the same
+        hashed = map(hash, objlist)
+        for h in hashed[1:]:
+            if h != hashed[0]:
+                self.fail("hashed values differ: %s" % `objlist`)
+
+    def test_numeric_literals(self):
+        self.same_hash(1, 1L, 1.0, 1.0+0.0j)
+
+    def test_coerced_integers(self):
+        self.same_hash(int(1), long(1), float(1), complex(1),
+                       int('1'), float('1.0'))
+
+    def test_coerced_floats(self):
+        self.same_hash(long(1.23e300), float(1.23e300))
+        self.same_hash(float(0.5), complex(0.5, 0.0))
 
 
-
-same_hash(1, 1L, 1.0, 1.0+0.0j)
-same_hash(int(1), long(1), float(1), complex(1))
-
-same_hash(long(1.23e300), float(1.23e300))
-
-same_hash(float(0.5), complex(0.5, 0.0))
+test_support.run_unittest(HashEqualityTestCase)
