Home | History | Annotate | Download | only in test
      1 # -*- coding: koi8-r -*-
      2 
      3 import unittest
      4 from test import test_support
      5 
      6 class PEP263Test(unittest.TestCase):
      7 
      8     def test_pep263(self):
      9         self.assertEqual(
     10             u"".encode("utf-8"),
     11             '\xd0\x9f\xd0\xb8\xd1\x82\xd0\xbe\xd0\xbd'
     12         )
     13         self.assertEqual(
     14             u"\".encode("utf-8"),
     15             '\\\xd0\x9f'
     16         )
     17 
     18     def test_compilestring(self):
     19         # see #1882
     20         c = compile("\n# coding: utf-8\nu = u'\xc3\xb3'\n", "dummy", "exec")
     21         d = {}
     22         exec c in d
     23         self.assertEqual(d['u'], u'\xf3')
     24 
     25 
     26     def test_issue3297(self):
     27         c = compile("a, b = '\U0001010F', '\\U0001010F'", "dummy", "exec")
     28         d = {}
     29         exec(c, d)
     30         self.assertEqual(d['a'], d['b'])
     31         self.assertEqual(len(d['a']), len(d['b']))
     32 
     33     def test_issue7820(self):
     34         # Ensure that check_bom() restores all bytes in the right order if
     35         # check_bom() fails in pydebug mode: a buffer starts with the first
     36         # byte of a valid BOM, but next bytes are different
     37 
     38         # one byte in common with the UTF-16-LE BOM
     39         self.assertRaises(SyntaxError, eval, '\xff\x20')
     40 
     41         # two bytes in common with the UTF-8 BOM
     42         self.assertRaises(SyntaxError, eval, '\xef\xbb\x20')
     43 
     44 def test_main():
     45     test_support.run_unittest(PEP263Test)
     46 
     47 if __name__=="__main__":
     48     test_main()
     49