summaryrefslogtreecommitdiff
path: root/tests/utf8.txt
blob: 3f1f22c46bf953c9643e05fb63902e8bae0913d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
# This file is derived from 
#
#    http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
#    
# Which was created by   Markus Kuhn <mkuhn@acm.org> - 2000-09-02 
#
# lines begining with # and blank lines are ignored
#
# Beyond that, this file consists of a series of test cases. Each test case consists of
# 2 or 3 lines:
#
#  1. A UTF-8 string
#  2. A status
#      VALID      : The string is a valid UTF-8 representation of valid Unicode
#      INCOMPLETE : The string has a partial character at the end
#      NOTUNICODE : The string is valid UTF-8, but the characters represented
#                   are not valid unicode (
#      OVERLONG   : The string includes overlong sequences
#      MALFORMED  : The string is not valid UTF-8
# 3. If the status is VALID or NOTUNICODE, the UCS-4 representation of the string,
#    as a series of hex numbers.

# 1  Some correct UTF-8 text
κόσμε
VALID
03ba 1f79 03c3 03bc 03b5

# 2.1  First possible sequence of a certain length
#
# FIXME - handle NULLS?
#
# [ NULL BYTE ]
#VALID
#0000

€
VALID
0080

ࠀ
VALID
0800

𐀀
VALID
00010000


NOTUNICODE
00200000


NOTUNICODE
04000000


VALID
0000007f

߿
VALID
000007ff

￿
NOTUNICODE
0000ffff


NOTUNICODE
001fffff


NOTUNICODE
03ffffff


NOTUNICODE
7fffffff

# 2.3  Other boundary conditions

퟿
VALID
d7ff


VALID
e000

�
VALID
fffd

􏿽
VALID
0010fffd

􏿿
NOTUNICODE
0010ffff


NOTUNICODE
00110000

# 3.1  Unexpected continuation bytes


MALFORMED

MALFORMED

MALFORMED

MALFORMED

MALFORMED

MALFORMED

MALFORMED

MALFORMED

MALFORMED

# 3.2  Lonely start characters

                                
MALFORMED
                
MALFORMED
        
MALFORMED
    
MALFORMED
  
MALFORMED

# 3.3  Sequences with last continuation byte missing


INCOMPLETE

INCOMPLETE

INCOMPLETE

INCOMPLETE

INCOMPLETE

INCOMPLETE

INCOMPLETE

INCOMPLETE

INCOMPLETE

INCOMPLETE

# 3.4  Concatenation of incomplete sequences


MALFORMED

# 3.5  Impossible bytes


MALFORMED

MALFORMED

MALFORMED

#  Examples of an overlong ASCII character


OVERLONG

OVERLONG

OVERLONG

OVERLONG

OVERLONG

#  Maximum overlong sequences


OVERLONG

OVERLONG

OVERLONG

OVERLONG

OVERLONG

# Overlong representation of the NUL character


OVERLONG

OVERLONG

OVERLONG

OVERLONG

OVERLONG

# Illegal code positions

# Single UTF-16 surrogates


NOTUNICODE
d800


NOTUNICODE
db7f


NOTUNICODE
db80


NOTUNICODE
dbff


NOTUNICODE
dc00


NOTUNICODE
df80


NOTUNICODE
dfff

# Paired UTF-16 surrogates


NOTUNICODE
d800 dc00


NOTUNICODE
d800 dfff


NOTUNICODE
db7f dc00


NOTUNICODE
db7f dfff


NOTUNICODE
db80 dc00


NOTUNICODE
db80 dfff


NOTUNICODE
dbff dc00


NOTUNICODE
dbff dfff

# Other illegal code positions

￾
NOTUNICODE
fffe

￿
NOTUNICODE
ffff

################
#
# Some more tests, not from Markus Kuhn's file
#

# Mixed plane 0 and higher planes

A𐀀B􏿽C
VALID
41 00010000 42 10fffd 43