34 lines
765 B
Python
34 lines
765 B
Python
from __future__ import annotations
|
|
|
|
import sys
|
|
|
|
sys.path[0:0] = [""]
|
|
|
|
from test import unittest
|
|
|
|
from bson import encode
|
|
from bson.errors import InvalidStringData
|
|
|
|
|
|
class TestUTF8(unittest.TestCase):
|
|
# Verify that python and bson have the same understanding of
|
|
# legal utf-8 if the first byte is 0xf4 (244)
|
|
def _assert_same_utf8_validation(self, data):
|
|
try:
|
|
data.decode("utf-8")
|
|
py_is_legal = True
|
|
except UnicodeDecodeError:
|
|
py_is_legal = False
|
|
|
|
try:
|
|
encode({"x": data})
|
|
bson_is_legal = True
|
|
except InvalidStringData:
|
|
bson_is_legal = False
|
|
|
|
self.assertEqual(py_is_legal, bson_is_legal, data)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|