Skip to content

Commit 335c1b9

Browse files
committed
Add test suite for KOI8-U encoding
1 parent e814588 commit 335c1b9

File tree

2 files changed

+316
-0
lines changed

2 files changed

+316
-0
lines changed

ext/mbstring/tests/data/KOI8-U.txt

Lines changed: 301 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,301 @@
1+
# KOI8-U.TXT
2+
# Date: 2016-01-04 23:09:00 GMT [KW]
3+
# © 2016 Unicode®, Inc.
4+
# For terms of use, see http://www.unicode.org/terms_of_use.html
5+
#
6+
#
7+
# Name: KOI8-U (RFC2319) to Unicode
8+
# Unicode version: 5.1
9+
# Table version: 2.0
10+
# Table format: Format A
11+
# Date: 13 October 2008 (header updated: 2016-January-04)
12+
# Authors: Philippe Verdy <verdy_p AT wanadoo.fr>,
13+
# Helmut Richter <[email protected]>
14+
#
15+
# General notes:
16+
#
17+
# This table contains the data the Unicode Consortium has on how
18+
# KOI8-U characters map into Unicode. The underlying document is the
19+
# mapping described in RFC 2319. No statements are made as to whether
20+
# this mapping is the same as the mapping defined as "Code Page 878"
21+
# with some vendors.
22+
#
23+
# The KOI8-U (RFC2319) encoding is a variant based on KOI8-R (RFC1489),
24+
# where the support for four additional Cyrillic letters was added (both small
25+
# and capital letters), replacing 8 box-drawing characters. It is still widely
26+
# used to encode texts in Ukrainian, Byelorussian and Bulgarian.
27+
#
28+
# Format: Three tab-separated columns
29+
# Column #1 is the KOI8-U code (in hex as 0xXX)
30+
# Column #2 is the Unicode (in hex as 0xXXXX)
31+
# Column #3 the Unicode name (follows a comment sign, '#')
32+
#
33+
# The entries are in KOI8-U order.
34+
#
35+
# Version history
36+
# 1.0 version: created.
37+
# 2.0 version: updates to copyright notice and terms of use; no
38+
# changes to character mappings
39+
#
40+
# Updated versions of this file may be found in:
41+
# <http://www.unicode.org/Public/MAPPINGS/>
42+
#
43+
# Any comments or problems, contact the Unicode Consortium at:
44+
# <http://www.unicode.org/reporting.html>
45+
#
46+
0x00 0x0000 # NULL
47+
0x01 0x0001 # START OF HEADING
48+
0x02 0x0002 # START OF TEXT
49+
0x03 0x0003 # END OF TEXT
50+
0x04 0x0004 # END OF TRANSMISSION
51+
0x05 0x0005 # ENQUIRY
52+
0x06 0x0006 # ACKNOWLEDGE
53+
0x07 0x0007 # BELL
54+
0x08 0x0008 # BACKSPACE
55+
0x09 0x0009 # HORIZONTAL TABULATION
56+
0x0A 0x000A # LINE FEED
57+
0x0B 0x000B # VERTICAL TABULATION
58+
0x0C 0x000C # FORM FEED
59+
0x0D 0x000D # CARRIAGE RETURN
60+
0x0E 0x000E # SHIFT OUT
61+
0x0F 0x000F # SHIFT IN
62+
0x10 0x0010 # DATA LINK ESCAPE
63+
0x11 0x0011 # DEVICE CONTROL ONE
64+
0x12 0x0012 # DEVICE CONTROL TWO
65+
0x13 0x0013 # DEVICE CONTROL THREE
66+
0x14 0x0014 # DEVICE CONTROL FOUR
67+
0x15 0x0015 # NEGATIVE ACKNOWLEDGE
68+
0x16 0x0016 # SYNCHRONOUS IDLE
69+
0x17 0x0017 # END OF TRANSMISSION BLOCK
70+
0x18 0x0018 # CANCEL
71+
0x19 0x0019 # END OF MEDIUM
72+
0x1A 0x001A # SUBSTITUTE
73+
0x1B 0x001B # ESCAPE
74+
0x1C 0x001C # FILE SEPARATOR
75+
0x1D 0x001D # GROUP SEPARATOR
76+
0x1E 0x001E # RECORD SEPARATOR
77+
0x1F 0x001F # UNIT SEPARATOR
78+
0x20 0x0020 # SPACE
79+
0x21 0x0021 # EXCLAMATION MARK
80+
0x22 0x0022 # QUOTATION MARK
81+
0x23 0x0023 # NUMBER SIGN
82+
0x24 0x0024 # DOLLAR SIGN
83+
0x25 0x0025 # PERCENT SIGN
84+
0x26 0x0026 # AMPERSAND
85+
0x27 0x0027 # APOSTROPHE
86+
0x28 0x0028 # LEFT PARENTHESIS
87+
0x29 0x0029 # RIGHT PARENTHESIS
88+
0x2A 0x002A # ASTERISK
89+
0x2B 0x002B # PLUS SIGN
90+
0x2C 0x002C # COMMA
91+
0x2D 0x002D # HYPHEN-MINUS
92+
0x2E 0x002E # FULL STOP
93+
0x2F 0x002F # SOLIDUS
94+
0x30 0x0030 # DIGIT ZERO
95+
0x31 0x0031 # DIGIT ONE
96+
0x32 0x0032 # DIGIT TWO
97+
0x33 0x0033 # DIGIT THREE
98+
0x34 0x0034 # DIGIT FOUR
99+
0x35 0x0035 # DIGIT FIVE
100+
0x36 0x0036 # DIGIT SIX
101+
0x37 0x0037 # DIGIT SEVEN
102+
0x38 0x0038 # DIGIT EIGHT
103+
0x39 0x0039 # DIGIT NINE
104+
0x3A 0x003A # COLON
105+
0x3B 0x003B # SEMICOLON
106+
0x3C 0x003C # LESS-THAN SIGN
107+
0x3D 0x003D # EQUALS SIGN
108+
0x3E 0x003E # GREATER-THAN SIGN
109+
0x3F 0x003F # QUESTION MARK
110+
0x40 0x0040 # COMMERCIAL AT
111+
0x41 0x0041 # LATIN CAPITAL LETTER A
112+
0x42 0x0042 # LATIN CAPITAL LETTER B
113+
0x43 0x0043 # LATIN CAPITAL LETTER C
114+
0x44 0x0044 # LATIN CAPITAL LETTER D
115+
0x45 0x0045 # LATIN CAPITAL LETTER E
116+
0x46 0x0046 # LATIN CAPITAL LETTER F
117+
0x47 0x0047 # LATIN CAPITAL LETTER G
118+
0x48 0x0048 # LATIN CAPITAL LETTER H
119+
0x49 0x0049 # LATIN CAPITAL LETTER I
120+
0x4A 0x004A # LATIN CAPITAL LETTER J
121+
0x4B 0x004B # LATIN CAPITAL LETTER K
122+
0x4C 0x004C # LATIN CAPITAL LETTER L
123+
0x4D 0x004D # LATIN CAPITAL LETTER M
124+
0x4E 0x004E # LATIN CAPITAL LETTER N
125+
0x4F 0x004F # LATIN CAPITAL LETTER O
126+
0x50 0x0050 # LATIN CAPITAL LETTER P
127+
0x51 0x0051 # LATIN CAPITAL LETTER Q
128+
0x52 0x0052 # LATIN CAPITAL LETTER R
129+
0x53 0x0053 # LATIN CAPITAL LETTER S
130+
0x54 0x0054 # LATIN CAPITAL LETTER T
131+
0x55 0x0055 # LATIN CAPITAL LETTER U
132+
0x56 0x0056 # LATIN CAPITAL LETTER V
133+
0x57 0x0057 # LATIN CAPITAL LETTER W
134+
0x58 0x0058 # LATIN CAPITAL LETTER X
135+
0x59 0x0059 # LATIN CAPITAL LETTER Y
136+
0x5A 0x005A # LATIN CAPITAL LETTER Z
137+
0x5B 0x005B # LEFT SQUARE BRACKET
138+
0x5C 0x005C # REVERSE SOLIDUS
139+
0x5D 0x005D # RIGHT SQUARE BRACKET
140+
0x5E 0x005E # CIRCUMFLEX ACCENT
141+
0x5F 0x005F # LOW LINE
142+
0x60 0x0060 # GRAVE ACCENT
143+
0x61 0x0061 # LATIN SMALL LETTER A
144+
0x62 0x0062 # LATIN SMALL LETTER B
145+
0x63 0x0063 # LATIN SMALL LETTER C
146+
0x64 0x0064 # LATIN SMALL LETTER D
147+
0x65 0x0065 # LATIN SMALL LETTER E
148+
0x66 0x0066 # LATIN SMALL LETTER F
149+
0x67 0x0067 # LATIN SMALL LETTER G
150+
0x68 0x0068 # LATIN SMALL LETTER H
151+
0x69 0x0069 # LATIN SMALL LETTER I
152+
0x6A 0x006A # LATIN SMALL LETTER J
153+
0x6B 0x006B # LATIN SMALL LETTER K
154+
0x6C 0x006C # LATIN SMALL LETTER L
155+
0x6D 0x006D # LATIN SMALL LETTER M
156+
0x6E 0x006E # LATIN SMALL LETTER N
157+
0x6F 0x006F # LATIN SMALL LETTER O
158+
0x70 0x0070 # LATIN SMALL LETTER P
159+
0x71 0x0071 # LATIN SMALL LETTER Q
160+
0x72 0x0072 # LATIN SMALL LETTER R
161+
0x73 0x0073 # LATIN SMALL LETTER S
162+
0x74 0x0074 # LATIN SMALL LETTER T
163+
0x75 0x0075 # LATIN SMALL LETTER U
164+
0x76 0x0076 # LATIN SMALL LETTER V
165+
0x77 0x0077 # LATIN SMALL LETTER W
166+
0x78 0x0078 # LATIN SMALL LETTER X
167+
0x79 0x0079 # LATIN SMALL LETTER Y
168+
0x7A 0x007A # LATIN SMALL LETTER Z
169+
0x7B 0x007B # LEFT CURLY BRACKET
170+
0x7C 0x007C # VERTICAL LINE
171+
0x7D 0x007D # RIGHT CURLY BRACKET
172+
0x7E 0x007E # TILDE
173+
0x7F 0x007F # DELETE
174+
0x80 0x2500 # BOX DRAWINGS LIGHT HORIZONTAL
175+
0x81 0x2502 # BOX DRAWINGS LIGHT VERTICAL
176+
0x82 0x250C # BOX DRAWINGS LIGHT DOWN AND RIGHT
177+
0x83 0x2510 # BOX DRAWINGS LIGHT DOWN AND LEFT
178+
0x84 0x2514 # BOX DRAWINGS LIGHT UP AND RIGHT
179+
0x85 0x2518 # BOX DRAWINGS LIGHT UP AND LEFT
180+
0x86 0x251C # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
181+
0x87 0x2524 # BOX DRAWINGS LIGHT VERTICAL AND LEFT
182+
0x88 0x252C # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
183+
0x89 0x2534 # BOX DRAWINGS LIGHT UP AND HORIZONTAL
184+
0x8A 0x253C # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
185+
0x8B 0x2580 # UPPER HALF BLOCK
186+
0x8C 0x2584 # LOWER HALF BLOCK
187+
0x8D 0x2588 # FULL BLOCK
188+
0x8E 0x258C # LEFT HALF BLOCK
189+
0x8F 0x2590 # RIGHT HALF BLOCK
190+
0x90 0x2591 # LIGHT SHADE
191+
0x91 0x2592 # MEDIUM SHADE
192+
0x92 0x2593 # DARK SHADE
193+
0x93 0x2320 # TOP HALF INTEGRAL
194+
0x94 0x25A0 # BLACK SQUARE
195+
0x95 0x2219 # BULLET OPERATOR
196+
0x96 0x221A # SQUARE ROOT
197+
0x97 0x2248 # ALMOST EQUAL TO
198+
0x98 0x2264 # LESS-THAN OR EQUAL TO
199+
0x99 0x2265 # GREATER-THAN OR EQUAL TO
200+
0x9A 0x00A0 # NO-BREAK SPACE
201+
0x9B 0x2321 # BOTTOM HALF INTEGRAL
202+
0x9C 0x00B0 # DEGREE SIGN
203+
0x9D 0x00B2 # SUPERSCRIPT TWO
204+
0x9E 0x00B7 # MIDDLE DOT
205+
0x9F 0x00F7 # DIVISION SIGN
206+
0xA0 0x2550 # BOX DRAWINGS DOUBLE HORIZONTAL
207+
0xA1 0x2551 # BOX DRAWINGS DOUBLE VERTICAL
208+
0xA2 0x2552 # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
209+
0xA3 0x0451 # CYRILLIC SMALL LETTER IO
210+
0xA4 0x0454 # CYRILLIC SMALL LETTER UKRAINIAN IE
211+
0xA5 0x2554 # BOX DRAWINGS DOUBLE DOWN AND RIGHT
212+
0xA6 0x0456 # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
213+
0xA7 0x0457 # CYRILLIC SMALL LETTER YI (UKRAINIAN)
214+
0xA8 0x2557 # BOX DRAWINGS DOUBLE DOWN AND LEFT
215+
0xA9 0x2558 # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
216+
0xAA 0x2559 # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
217+
0xAB 0x255A # BOX DRAWINGS DOUBLE UP AND RIGHT
218+
0xAC 0x255B # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
219+
0xAD 0x0491 # CYRILLIC SMALL LETTER GHE WITH UPTURN
220+
0xAE 0x255D # BOX DRAWINGS DOUBLE UP AND LEFT
221+
0xAF 0x255E # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
222+
0xB0 0x255F # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
223+
0xB1 0x2560 # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
224+
0xB2 0x2561 # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
225+
0xB3 0x0401 # CYRILLIC CAPITAL LETTER IO
226+
0xB4 0x0404 # CYRILLIC CAPITAL LETTER UKRAINIAN IE
227+
0xB5 0x2563 # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
228+
0xB6 0x0406 # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
229+
0xB7 0x0407 # CYRILLIC CAPITAL LETTER YI (UKRAINIAN)
230+
0xB8 0x2566 # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
231+
0xB9 0x2567 # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
232+
0xBA 0x2568 # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
233+
0xBB 0x2569 # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
234+
0xBC 0x256A # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
235+
0xBD 0x0490 # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
236+
0xBE 0x256C # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
237+
0xBF 0x00A9 # COPYRIGHT SIGN
238+
0xC0 0x044E # CYRILLIC SMALL LETTER YU
239+
0xC1 0x0430 # CYRILLIC SMALL LETTER A
240+
0xC2 0x0431 # CYRILLIC SMALL LETTER BE
241+
0xC3 0x0446 # CYRILLIC SMALL LETTER TSE
242+
0xC4 0x0434 # CYRILLIC SMALL LETTER DE
243+
0xC5 0x0435 # CYRILLIC SMALL LETTER IE
244+
0xC6 0x0444 # CYRILLIC SMALL LETTER EF
245+
0xC7 0x0433 # CYRILLIC SMALL LETTER GHE
246+
0xC8 0x0445 # CYRILLIC SMALL LETTER HA
247+
0xC9 0x0438 # CYRILLIC SMALL LETTER I
248+
0xCA 0x0439 # CYRILLIC SMALL LETTER SHORT I
249+
0xCB 0x043A # CYRILLIC SMALL LETTER KA
250+
0xCC 0x043B # CYRILLIC SMALL LETTER EL
251+
0xCD 0x043C # CYRILLIC SMALL LETTER EM
252+
0xCE 0x043D # CYRILLIC SMALL LETTER EN
253+
0xCF 0x043E # CYRILLIC SMALL LETTER O
254+
0xD0 0x043F # CYRILLIC SMALL LETTER PE
255+
0xD1 0x044F # CYRILLIC SMALL LETTER YA
256+
0xD2 0x0440 # CYRILLIC SMALL LETTER ER
257+
0xD3 0x0441 # CYRILLIC SMALL LETTER ES
258+
0xD4 0x0442 # CYRILLIC SMALL LETTER TE
259+
0xD5 0x0443 # CYRILLIC SMALL LETTER U
260+
0xD6 0x0436 # CYRILLIC SMALL LETTER ZHE
261+
0xD7 0x0432 # CYRILLIC SMALL LETTER VE
262+
0xD8 0x044C # CYRILLIC SMALL LETTER SOFT SIGN
263+
0xD9 0x044B # CYRILLIC SMALL LETTER YERU
264+
0xDA 0x0437 # CYRILLIC SMALL LETTER ZE
265+
0xDB 0x0448 # CYRILLIC SMALL LETTER SHA
266+
0xDC 0x044D # CYRILLIC SMALL LETTER E
267+
0xDD 0x0449 # CYRILLIC SMALL LETTER SHCHA
268+
0xDE 0x0447 # CYRILLIC SMALL LETTER CHE
269+
0xDF 0x044A # CYRILLIC SMALL LETTER HARD SIGN
270+
0xE0 0x042E # CYRILLIC CAPITAL LETTER YU
271+
0xE1 0x0410 # CYRILLIC CAPITAL LETTER A
272+
0xE2 0x0411 # CYRILLIC CAPITAL LETTER BE
273+
0xE3 0x0426 # CYRILLIC CAPITAL LETTER TSE
274+
0xE4 0x0414 # CYRILLIC CAPITAL LETTER DE
275+
0xE5 0x0415 # CYRILLIC CAPITAL LETTER IE
276+
0xE6 0x0424 # CYRILLIC CAPITAL LETTER EF
277+
0xE7 0x0413 # CYRILLIC CAPITAL LETTER GHE
278+
0xE8 0x0425 # CYRILLIC CAPITAL LETTER HA
279+
0xE9 0x0418 # CYRILLIC CAPITAL LETTER I
280+
0xEA 0x0419 # CYRILLIC CAPITAL LETTER SHORT I
281+
0xEB 0x041A # CYRILLIC CAPITAL LETTER KA
282+
0xEC 0x041B # CYRILLIC CAPITAL LETTER EL
283+
0xED 0x041C # CYRILLIC CAPITAL LETTER EM
284+
0xEE 0x041D # CYRILLIC CAPITAL LETTER EN
285+
0xEF 0x041E # CYRILLIC CAPITAL LETTER O
286+
0xF0 0x041F # CYRILLIC CAPITAL LETTER PE
287+
0xF1 0x042F # CYRILLIC CAPITAL LETTER YA
288+
0xF2 0x0420 # CYRILLIC CAPITAL LETTER ER
289+
0xF3 0x0421 # CYRILLIC CAPITAL LETTER ES
290+
0xF4 0x0422 # CYRILLIC CAPITAL LETTER TE
291+
0xF5 0x0423 # CYRILLIC CAPITAL LETTER U
292+
0xF6 0x0416 # CYRILLIC CAPITAL LETTER ZHE
293+
0xF7 0x0412 # CYRILLIC CAPITAL LETTER VE
294+
0xF8 0x042C # CYRILLIC CAPITAL LETTER SOFT SIGN
295+
0xF9 0x042B # CYRILLIC CAPITAL LETTER YERU
296+
0xFA 0x0417 # CYRILLIC CAPITAL LETTER ZE
297+
0xFB 0x0428 # CYRILLIC CAPITAL LETTER SHA
298+
0xFC 0x042D # CYRILLIC CAPITAL LETTER E
299+
0xFD 0x0429 # CYRILLIC CAPITAL LETTER SHCHA
300+
0xFE 0x0427 # CYRILLIC CAPITAL LETTER CHE
301+
0xFF 0x042A # CYRILLIC CAPITAL LETTER HARD SIGN
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
--TEST--
2+
Exhaustive test of verification and conversion of KOI8-U text
3+
--SKIPIF--
4+
<?php
5+
extension_loaded('mbstring') or die('skip mbstring not available');
6+
if (getenv("SKIP_SLOW_TESTS")) die("skip slow test");
7+
?>
8+
--FILE--
9+
<?php
10+
include('encoding_tests.inc');
11+
testEncodingFromUTF16ConversionTable(__DIR__ . '/data/KOI8-U.txt', 'KOI8-U');
12+
?>
13+
--EXPECT--
14+
Tested KOI8-U -> UTF-16BE
15+
Tested UTF-16BE -> KOI8-U

0 commit comments

Comments
 (0)