diff --git a/Lib/test/test_charmapcodec.py b/Lib/test/test_charmapcodec.py
index af7d434..337d6e5 100644
--- a/Lib/test/test_charmapcodec.py
+++ b/Lib/test/test_charmapcodec.py
@@ -9,35 +9,39 @@
 
 """#"
 
-def check(a, b):
-    if a != b:
-        print '*** check failed: %s != %s' % (repr(a), repr(b))
-    else:
-        print '%s == %s: OK' % (a, b)
+import test.test_support, unittest
 
 # test codec's full path name (see test/testcodec.py)
 codecname = 'test.testcodec'
 
-check(unicode('abc', codecname), u'abc')
-check(unicode('xdef', codecname), u'abcdef')
-check(unicode('defx', codecname), u'defabc')
-check(unicode('dxf', codecname), u'dabcf')
-check(unicode('dxfx', codecname), u'dabcfabc')
+class CharmapCodecTest(unittest.TestCase):
+    def test_constructorx(self):
+        self.assertEquals(unicode('abc', codecname), u'abc')
+        self.assertEquals(unicode('xdef', codecname), u'abcdef')
+        self.assertEquals(unicode('defx', codecname), u'defabc')
+        self.assertEquals(unicode('dxf', codecname), u'dabcf')
+        self.assertEquals(unicode('dxfx', codecname), u'dabcfabc')
 
-check(u'abc'.encode(codecname), 'abc')
-check(u'xdef'.encode(codecname), 'abcdef')
-check(u'defx'.encode(codecname), 'defabc')
-check(u'dxf'.encode(codecname), 'dabcf')
-check(u'dxfx'.encode(codecname), 'dabcfabc')
+    def test_encodex(self):
+        self.assertEquals(u'abc'.encode(codecname), 'abc')
+        self.assertEquals(u'xdef'.encode(codecname), 'abcdef')
+        self.assertEquals(u'defx'.encode(codecname), 'defabc')
+        self.assertEquals(u'dxf'.encode(codecname), 'dabcf')
+        self.assertEquals(u'dxfx'.encode(codecname), 'dabcfabc')
 
-check(unicode('ydef', codecname), u'def')
-check(unicode('defy', codecname), u'def')
-check(unicode('dyf', codecname), u'df')
-check(unicode('dyfy', codecname), u'df')
+    def test_constructory(self):
+        self.assertEquals(unicode('ydef', codecname), u'def')
+        self.assertEquals(unicode('defy', codecname), u'def')
+        self.assertEquals(unicode('dyf', codecname), u'df')
+        self.assertEquals(unicode('dyfy', codecname), u'df')
 
-try:
-    unicode('abc\001', codecname)
-except UnicodeError:
-    print '\\001 maps to undefined: OK'
-else:
-    print '*** check failed: \\001 does not map to undefined'
+    def test_maptoundefined(self):
+        self.assertRaises(UnicodeError, unicode, 'abc\001', codecname)
+
+def test_main():
+    suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(CharmapCodecTest))
+    test.test_support.run_suite(suite)
+
+if __name__ == "__main__":
+    test_main()
