|
2 | 2 | # Copyright (C) 1996-2017 Python Software Foundation
|
3 | 3 | #
|
4 | 4 | # Licensed under the PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
|
| 5 | +import sys |
5 | 6 |
|
6 | 7 |
|
7 | 8 | def coding_checker(self, coder):
|
@@ -323,3 +324,37 @@ def test_codecs_builtins(self):
|
323 | 324 |
|
324 | 325 | encoded = codecs.ascii_encode(s)
|
325 | 326 | self.assertEqual(s, codecs.ascii_decode(encoded[0])[0])
|
| 327 | + |
| 328 | + |
| 329 | +class UTFByteOrderTest(unittest.TestCase): |
| 330 | + def test_utf16_byteorder(self): |
| 331 | + self.assertEqual("😂".encode("utf-16-le"), b'=\xd8\x02\xde') |
| 332 | + self.assertEqual("😂".encode("utf-16-be"), b'\xd8=\xde\x02') |
| 333 | + if sys.byteorder == 'little': |
| 334 | + self.assertEqual("😂".encode("utf-16"), b'\xff\xfe=\xd8\x02\xde') |
| 335 | + else: |
| 336 | + self.assertEqual("😂".encode("utf-16"), b'\xfe\xff\xd8=\xde\x02') |
| 337 | + self.assertEqual(b'=\xd8\x02\xde'.decode('utf-16-le'), "😂") |
| 338 | + self.assertEqual(b'\xd8=\xde\x02'.decode('utf-16-be'), "😂") |
| 339 | + self.assertEqual(b'\xff\xfe=\xd8\x02\xde'.decode('utf-16'), "😂") |
| 340 | + self.assertEqual(b'\xfe\xff\xd8=\xde\x02'.decode('utf-16'), "😂") |
| 341 | + if sys.byteorder == 'little': |
| 342 | + self.assertEqual(b'=\xd8\x02\xde'.decode('utf-16'), "😂") |
| 343 | + else: |
| 344 | + self.assertEqual(b'\xd8=\xde\x02'.decode('utf-16'), "😂") |
| 345 | + |
| 346 | + def test_utf32_byteorder(self): |
| 347 | + self.assertEqual("😂".encode("utf-32-le"), b'\x02\xf6\x01\x00') |
| 348 | + self.assertEqual("😂".encode("utf-32-be"), b'\x00\x01\xf6\x02') |
| 349 | + if sys.byteorder == 'little': |
| 350 | + self.assertEqual("😂".encode("utf-32"), b'\xff\xfe\x00\x00\x02\xf6\x01\x00') |
| 351 | + else: |
| 352 | + self.assertEqual("😂".encode("utf-32"), b'\x00\x00\xfe\xff\xd8=\xde\x02') |
| 353 | + self.assertEqual(b'\x02\xf6\x01\x00'.decode('utf-32-le'), "😂") |
| 354 | + self.assertEqual(b'\x00\x01\xf6\x02'.decode('utf-32-be'), "😂") |
| 355 | + self.assertEqual(b'\xff\xfe\x00\x00\x02\xf6\x01\x00'.decode('utf-32'), "😂") |
| 356 | + self.assertEqual(b'\x00\x00\xfe\xff\x00\x01\xf6\x02'.decode('utf-32'), "😂") |
| 357 | + if sys.byteorder == 'little': |
| 358 | + self.assertEqual(b'\x02\xf6\x01\x00'.decode('utf-32'), "😂") |
| 359 | + else: |
| 360 | + self.assertEqual(b'\x00\x01\xf6\x02'.decode('utf-32'), "😂") |
0 commit comments