cython

Форк
0
/
unicodeliterals.pyx 
132 строки · 3.0 Кб
1
# -*- coding: utf-8 -*-
2

3
import sys
4

5
__doc__ = br"""
6
    >>> sa
7
    'abc'
8
    >>> ua
9
    'abc'
10
    >>> b
11
    '123'
12
    >>> c
13
    'S\xf8k ik'
14
    >>> d
15
    '\xfc\xd6\xe4'
16
    >>> e
17
    '\x03g\xf8\uf8d2S\xf8k ik'
18
    >>> f
19
    '\xf8'
20
    >>> g
21
    '\udc00'
22
    >>> h
23
    '\ud800'
24
    >>> q
25
    '\udc00\ud800'
26

27
    # The output of surrogate pairs differs between 16/32bit Unicode runtimes.
28
    #>>> p
29
    #u'\ud800\udc00'
30

31
    >>> add
32
    'S\xf8k ik\xfc\xd6\xe4abc'
33
    >>> null
34
    '\x00'
35
""".decode("ASCII") + b"""
36
    >>> len(sa)
37
    3
38
    >>> len(ua)
39
    3
40
    >>> len(b)
41
    3
42
    >>> len(c)
43
    6
44
    >>> len(d)
45
    3
46
    >>> len(e)
47
    10
48
    >>> len(f)
49
    1
50
    >>> len(g)
51
    1
52
    >>> len(h)
53
    1
54
    >>> len(q)
55
    2
56
    >>> len(q)
57
    2
58
    >>> len(add)
59
    12
60
    >>> len(null)
61
    1
62
    >>> sys.maxunicode >= 65535
63
    True
64
    >>> sys.maxunicode == 65535 and 1 or len(wide_literal) # test for wide build
65
    1
66
    >>> sys.maxunicode > 65535 and 2 or len(wide_literal)  # test for narrow build
67
    2
68
""".decode("ASCII") + u"""
69
    >>> ua ==  'abc'
70
    True
71
    >>> b ==  '123'
72
    True
73
    >>> c ==  'Søk ik'
74
    True
75
    >>> d ==  'üÖä'
76
    True
77
    >>> e ==  '\x03\x67\xf8\uf8d2Søk ik'     # unescaped by Cython
78
    True
79
    >>> e ==  '\\x03\\x67\\xf8\\uf8d2Søk ik' # unescaped by Python
80
    True
81
    >>> f ==  '\xf8'  # unescaped by Cython
82
    True
83
    >>> f ==  '\\xf8' # unescaped by Python
84
    True
85
    >>> g ==  '\\udc00' # unescaped by Python (required by doctest)
86
    True
87
    >>> h ==  '\\ud800' # unescaped by Python (required by doctest)
88
    True
89
    >>> p == (u'\\ud800\\udc00' if sys.maxunicode == 1114111 else  '\\U00010000')  or  p  # unescaped by Python (required by doctest)
90
    True
91
    >>> q ==  '\\udc00\\ud800'  or  q  # unescaped by Python (required by doctest)
92
    True
93
    >>> k ==  '\\N{SNOWMAN}' ==  '\\u2603'  or  k
94
    True
95
    >>> m ==  'abc\\\\xf8\\\\t\\u00f8\\U000000f8'  or  m  # unescaped by Python (required by doctest)
96
    True
97
    >>> add ==  'Søk ik' +  'üÖä' + 'abc'  or  add
98
    True
99
    >>> null ==  '\\x00' # unescaped by Python (required by doctest)
100
    True
101
    >>> wide_literal ==  '\\U00101234'   # unescaped by Python
102
    True
103
    >>> ustring_in_constant_tuple == ('a',  'abc',  '\\N{SNOWMAN}',  'x' * 3,  '\\N{SNOWMAN}' * 4 +  'O')  or  ustring_in_constant_tuple  # unescaped by Python
104
    True
105

106
    >>> expected =  '\U00101234'    # unescaped by Cython
107
    >>> if wide_literal == expected: print(True)
108
    ... else: print(repr(wide_literal), repr(expected), sys.maxunicode)
109
    True
110
"""
111

112
sa = 'abc'
113
ua = u'abc'
114

115
b = u'123'
116
c = u'Søk ik'
117
d = u'üÖä'
118
e = u'\x03\x67\xf8\uf8d2Søk ik'
119
f = u'\xf8'
120
g = u'\udc00'   # lone trail surrogate
121
h = u'\ud800'   # lone lead surrogate
122
k = u'\N{SNOWMAN}'
123
m = ur'abc\xf8\t\u00f8\U000000f8'
124
p = u'\ud800\udc00'  # surrogate pair
125
q = u'\udc00\ud800'  # reversed surrogate pair
126

127
add = u'Søk ik' + u'üÖä' + u'abc'
128
null = u'\x00'
129

130
wide_literal = u'\U00101234'
131

132
ustring_in_constant_tuple = ('a', u'abc', u'\N{SNOWMAN}', u'x' * 3, u'\N{SNOWMAN}' * 4 + u'O')
133

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.