test_charmapcodec.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. """ Python character mapping codec test
  2. This uses the test codec in testcodec.py and thus also tests the
  3. encodings package lookup scheme.
  4. Written by Marc-Andre Lemburg (mal@lemburg.com).
  5. (c) Copyright 2000 Guido van Rossum.
  6. """#"
  7. import unittest
  8. import codecs
  9. # Register a search function which knows about our codec
  10. def codec_search_function(encoding):
  11. if encoding == 'testcodec':
  12. from test import testcodec
  13. return tuple(testcodec.getregentry())
  14. return None
  15. # test codec's name (see test/testcodec.py)
  16. codecname = 'testcodec'
  17. class CharmapCodecTest(unittest.TestCase):
  18. def setUp(self):
  19. codecs.register(codec_search_function)
  20. self.addCleanup(codecs.unregister, codec_search_function)
  21. def test_constructorx(self):
  22. self.assertEqual(str(b'abc', codecname), 'abc')
  23. self.assertEqual(str(b'xdef', codecname), 'abcdef')
  24. self.assertEqual(str(b'defx', codecname), 'defabc')
  25. self.assertEqual(str(b'dxf', codecname), 'dabcf')
  26. self.assertEqual(str(b'dxfx', codecname), 'dabcfabc')
  27. def test_encodex(self):
  28. self.assertEqual('abc'.encode(codecname), b'abc')
  29. self.assertEqual('xdef'.encode(codecname), b'abcdef')
  30. self.assertEqual('defx'.encode(codecname), b'defabc')
  31. self.assertEqual('dxf'.encode(codecname), b'dabcf')
  32. self.assertEqual('dxfx'.encode(codecname), b'dabcfabc')
  33. def test_constructory(self):
  34. self.assertEqual(str(b'ydef', codecname), 'def')
  35. self.assertEqual(str(b'defy', codecname), 'def')
  36. self.assertEqual(str(b'dyf', codecname), 'df')
  37. self.assertEqual(str(b'dyfy', codecname), 'df')
  38. def test_maptoundefined(self):
  39. self.assertRaises(UnicodeError, str, b'abc\001', codecname)
  40. if __name__ == "__main__":
  41. unittest.main()