import sys import unittest from pygame import compat encode_file_path = sys.modules['pygame.rwobject'].encode_file_path class CompatModuleTest(unittest.TestCase): def test_as_unicode(self): r = r'Bo\u00F6tes' ords = [ord('B'), ord('o'), 0xF6, ord('t'), ord('e'), ord('s')] self.assertEqual(len(r), 11) u = compat.as_unicode(r) self.assertIsInstance(u, compat.unicode_) self.assertEqual([ord(c) for c in u], ords) def test_as_bytes(self): ords = [0, 1, 0x7F, 0x80, 0xC3, 0x20, 0xC3, 0xB6, 0xFF] s = ''.join([chr(i) for i in ords]) self.assertEqual(len(s), len(ords)) b = compat.as_bytes(s) self.assertIsInstance(b, compat.bytes_) self.assertEqual([compat.ord_(i) for i in b], ords) def test_ord_(self): self.assertIsInstance(compat.ord_(compat.bytes_(1)[0]), int) def test_bytes_(self): self.assertFalse(compat.bytes_ is compat.unicode_) self.assertTrue(hasattr(compat.bytes_, 'capitalize')) self.assertFalse(hasattr(compat.bytes_, 'isdecimal')) def test_unicode_(self): self.assertTrue(hasattr(compat.unicode_(), 'isdecimal')) def test_long_(self): self.assertIsInstance(int('99999999999999999999'), compat.long_) def test_geterror(self): msg = 'Success' try: raise TypeError(msg) except TypeError: e = compat.geterror() self.assertIsInstance(e, TypeError) self.assertEqual(str(e), msg) def test_xrange_(self): self.assertFalse(isinstance(compat.xrange_(2), list)) def test_unichr_(self): ordval = 86 c = compat.unichr_(ordval) self.assertIsInstance(c, compat.unicode_) self.assertEqual(ord(c), ordval) def test_get_BytesIO(self): BytesIO = compat.get_BytesIO() b1 = compat.as_bytes("\x00\xffabc") b2 = BytesIO(b1).read() self.assertIsInstance(b2, compat.bytes_) self.assertEqual(b2, b1) def test_get_StringIO(self): StringIO = compat.get_StringIO() b1 = "abcde" b2 = StringIO(b1).read() self.assertIsInstance(b2, str) self.assertEqual(b2, b1) def test_raw_input_(self): StringIO = compat.get_StringIO() msg = 'success' tmp = sys.stdin sys.stdin = StringIO(msg + '\n') try: s = compat.raw_input_() self.assertEqual(s, msg) finally: sys.stdin = tmp def test_filesystem_encode(self): upath = compat.as_unicode(r"ab\u212Acd") self.assertEqual(compat.filesystem_encode(upath), encode_file_path(upath)) if __name__ == '__main__': unittest.main()