]>
Commit | Line | Data |
---|---|---|
f67539c2 TL |
1 | # |
2 | # Licensed to the Apache Software Foundation (ASF) under one | |
3 | # or more contributor license agreements. See the NOTICE file | |
4 | # distributed with this work for additional information | |
5 | # regarding copyright ownership. The ASF licenses this file | |
6 | # to you under the Apache License, Version 2.0 (the | |
7 | # "License"); you may not use this file except in compliance | |
8 | # with the License. You may obtain a copy of the License at | |
9 | # | |
10 | # http://www.apache.org/licenses/LICENSE-2.0 | |
11 | # | |
12 | # Unless required by applicable law or agreed to in writing, | |
13 | # software distributed under the License is distributed on an | |
14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
15 | # KIND, either express or implied. See the License for the | |
16 | # specific language governing permissions and limitations | |
17 | # under the License. | |
18 | # | |
19 | ||
20 | import sys | |
21 | import unittest | |
22 | ||
23 | import _import_local_thrift # noqa | |
24 | from thrift.protocol.TJSONProtocol import TJSONProtocol | |
25 | from thrift.transport import TTransport | |
26 | ||
27 | # | |
28 | # In order to run the test under Windows. We need to create symbolic link | |
29 | # name 'thrift' to '../src' folder by using: | |
30 | # | |
31 | # mklink /D thrift ..\src | |
32 | # | |
33 | ||
34 | ||
35 | class TestJSONString(unittest.TestCase): | |
36 | ||
37 | def test_escaped_unicode_string(self): | |
38 | unicode_json = b'"hello \\u0e01\\u0e02\\u0e03\\ud835\\udcab\\udb40\\udc70 unicode"' | |
39 | unicode_text = u'hello \u0e01\u0e02\u0e03\U0001D4AB\U000E0070 unicode' | |
40 | ||
41 | buf = TTransport.TMemoryBuffer(unicode_json) | |
42 | transport = TTransport.TBufferedTransportFactory().getTransport(buf) | |
43 | protocol = TJSONProtocol(transport) | |
44 | ||
45 | if sys.version_info[0] == 2: | |
46 | unicode_text = unicode_text.encode('utf8') | |
47 | self.assertEqual(protocol.readString(), unicode_text) | |
48 | ||
49 | ||
50 | if __name__ == '__main__': | |
51 | unittest.main() |