Skip to content

Commit ff953f2

Browse files
committed
Add test suite for ARMSCII-8 encoding
1 parent 9f5a4b3 commit ff953f2

File tree

2 files changed

+288
-0
lines changed

2 files changed

+288
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
--TEST--
2+
Exhaustive test of verification and conversion of ARMSCII-8 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+
srand(111); // Make results consistent
12+
mb_substitute_character(0x25); // '%'
13+
14+
readConversionTable(__DIR__ . '/data/ARMSCII-8.txt', $toUnicode, $fromUnicode);
15+
$irreversible = ["\x28", "\x29", "\x2C", "\x2D", "\x2E"];
16+
17+
findInvalidChars($toUnicode, $invalid, $truncated);
18+
testAllValidChars($toUnicode, 'ARMSCII-8', 'UTF-16BE', false);
19+
foreach ($irreversible as $char)
20+
unset($toUnicode[$char]);
21+
testAllValidChars($toUnicode, 'ARMSCII-8', 'UTF-16BE');
22+
testAllInvalidChars($invalid, $toUnicode, 'ARMSCII-8', 'UTF-16BE', "\x00%");
23+
testTruncatedChars($truncated, 'ARMSCII-8', 'UTF-16BE', "\x00%");
24+
echo "Tested ARMSCII-8 -> UTF-16BE\n";
25+
26+
findInvalidChars($fromUnicode, $invalid, $truncated, map(range(0,0xFF), 2));
27+
testAllInvalidChars($invalid, $fromUnicode, 'UTF-16BE', 'ARMSCII-8', '%');
28+
testTruncatedChars($truncated, 'UTF-16BE', 'ARMSCII-8', '%');
29+
echo "Tested UTF-16BE -> ARMSCII-8\n";
30+
?>
31+
--EXPECT--
32+
Tested ARMSCII-8 -> UTF-16BE
33+
Tested UTF-16BE -> ARMSCII-8

ext/mbstring/tests/data/ARMSCII-8.txt

Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,255 @@
1+
# Derived from armscii-8(7) man page
2+
0x0 0x0
3+
0x1 0x1
4+
0x2 0x2
5+
0x3 0x3
6+
0x4 0x4
7+
0x5 0x5
8+
0x6 0x6
9+
0x7 0x7
10+
0x8 0x8
11+
0x9 0x9
12+
0xA 0xA
13+
0xB 0xB
14+
0xC 0xC
15+
0xD 0xD
16+
0xE 0xE
17+
0xF 0xF
18+
0x10 0x10
19+
0x11 0x11
20+
0x12 0x12
21+
0x13 0x13
22+
0x14 0x14
23+
0x15 0x15
24+
0x16 0x16
25+
0x17 0x17
26+
0x18 0x18
27+
0x19 0x19
28+
0x1A 0x1A
29+
0x1B 0x1B
30+
0x1C 0x1C
31+
0x1D 0x1D
32+
0x1E 0x1E
33+
0x1F 0x1F
34+
0x20 0x20
35+
0x21 0x21
36+
0x22 0x22
37+
0x23 0x23
38+
0x24 0x24
39+
0x25 0x25
40+
0x26 0x26
41+
0x27 0x27
42+
0x28 0x28
43+
0x29 0x29
44+
0x2A 0x2A
45+
0x2B 0x2B
46+
0x2C 0x2C
47+
0x2D 0x2D
48+
0x2E 0x2E
49+
0x2F 0x2F
50+
0x30 0x30
51+
0x31 0x31
52+
0x32 0x32
53+
0x33 0x33
54+
0x34 0x34
55+
0x35 0x35
56+
0x36 0x36
57+
0x37 0x37
58+
0x38 0x38
59+
0x39 0x39
60+
0x3A 0x3A
61+
0x3B 0x3B
62+
0x3C 0x3C
63+
0x3D 0x3D
64+
0x3E 0x3E
65+
0x3F 0x3F
66+
0x40 0x40
67+
0x41 0x41
68+
0x42 0x42
69+
0x43 0x43
70+
0x44 0x44
71+
0x45 0x45
72+
0x46 0x46
73+
0x47 0x47
74+
0x48 0x48
75+
0x49 0x49
76+
0x4A 0x4A
77+
0x4B 0x4B
78+
0x4C 0x4C
79+
0x4D 0x4D
80+
0x4E 0x4E
81+
0x4F 0x4F
82+
0x50 0x50
83+
0x51 0x51
84+
0x52 0x52
85+
0x53 0x53
86+
0x54 0x54
87+
0x55 0x55
88+
0x56 0x56
89+
0x57 0x57
90+
0x58 0x58
91+
0x59 0x59
92+
0x5A 0x5A
93+
0x5B 0x5B
94+
0x5C 0x5C
95+
0x5D 0x5D
96+
0x5E 0x5E
97+
0x5F 0x5F
98+
0x60 0x60
99+
0x61 0x61
100+
0x62 0x62
101+
0x63 0x63
102+
0x64 0x64
103+
0x65 0x65
104+
0x66 0x66
105+
0x67 0x67
106+
0x68 0x68
107+
0x69 0x69
108+
0x6A 0x6A
109+
0x6B 0x6B
110+
0x6C 0x6C
111+
0x6D 0x6D
112+
0x6E 0x6E
113+
0x6F 0x6F
114+
0x70 0x70
115+
0x71 0x71
116+
0x72 0x72
117+
0x73 0x73
118+
0x74 0x74
119+
0x75 0x75
120+
0x76 0x76
121+
0x77 0x77
122+
0x78 0x78
123+
0x79 0x79
124+
0x7A 0x7A
125+
0x7B 0x7B
126+
0x7C 0x7C
127+
0x7D 0x7D
128+
0x7E 0x7E
129+
0x7F 0x7F
130+
0x80 0x80
131+
0x81 0x81
132+
0x82 0x82
133+
0x83 0x83
134+
0x84 0x84
135+
0x85 0x85
136+
0x86 0x86
137+
0x87 0x87
138+
0x88 0x88
139+
0x89 0x89
140+
0x8A 0x8A
141+
0x8B 0x8B
142+
0x8C 0x8C
143+
0x8D 0x8D
144+
0x8E 0x8E
145+
0x8F 0x8F
146+
0x90 0x90
147+
0x91 0x91
148+
0x92 0x92
149+
0x93 0x93
150+
0x94 0x94
151+
0x95 0x95
152+
0x96 0x96
153+
0x97 0x97
154+
0x98 0x98
155+
0x99 0x99
156+
0x9A 0x9A
157+
0x9B 0x9B
158+
0x9C 0x9C
159+
0x9D 0x9D
160+
0x9E 0x9E
161+
0x9F 0x9F
162+
0xA0 0x00A0 # NO-BREAK SPACE
163+
0xA2 0x0587 # SMALL LIGATURE ECH YIWN
164+
0xA3 0x0589 # ARMENIAN FULL STOP
165+
0xA4 0x0029 # RIGHT PARENTHESIS
166+
0xA5 0x0028 # LEFT PARENTHESIS
167+
0xA6 0x00BB # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
168+
0xA7 0x00AB # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
169+
0xA8 0x2014 # EM DASH
170+
0xA9 0x002E # FULL STOP
171+
0xAA 0x055D # ARMENIAN COMMA
172+
0xAB 0x002C # COMMA
173+
0xAC 0x002D # HYPHEN-MINUS
174+
0xAD 0x058A # ARMENIAN HYPHEN
175+
0xAE 0x2026 # HORIZONTAL ELLIPSIS
176+
0xAF 0x055C # ARMENIAN EXCLAMATION MARK
177+
0xB0 0x055B # ARMENIAN EMPHASIS MARK
178+
0xB1 0x055E # ARMENIAN QUESTION MARK
179+
0xB2 0x0531
180+
0xB3 0x0561
181+
0xB4 0x0532
182+
0xB5 0x0562
183+
0xB6 0x0533
184+
0xB7 0x0563
185+
0xB8 0x0534
186+
0xB9 0x0564
187+
0xBA 0x0535
188+
0xBB 0x0565
189+
0xBC 0x0536
190+
0xBD 0x0566
191+
0xBE 0x0537
192+
0xBF 0x0567
193+
0xC0 0x0538
194+
0xC1 0x0568
195+
0xC2 0x0539
196+
0xC3 0x0569
197+
0xC4 0x053A
198+
0xC5 0x056A
199+
0xC6 0x053B
200+
0xC7 0x056B
201+
0xC8 0x053C
202+
0xC9 0x056C
203+
0xCA 0x053D
204+
0xCB 0x056D
205+
0xCC 0x053E
206+
0xCD 0x056E
207+
0xCE 0x053F
208+
0xCF 0x056F
209+
0xD0 0x0540
210+
0xD1 0x0570
211+
0xD2 0x0541
212+
0xD3 0x0571
213+
0xD4 0x0542
214+
0xD5 0x0572
215+
0xD6 0x0543
216+
0xD7 0x0573
217+
0xD8 0x0544
218+
0xD9 0x0574
219+
0xDA 0x0545
220+
0xDB 0x0575
221+
0xDC 0x0546
222+
0xDD 0x0576
223+
0xDE 0x0547
224+
0xDF 0x0577
225+
0xE0 0x0548
226+
0xE1 0x0578
227+
0xE2 0x0549
228+
0xE3 0x0579
229+
0xE4 0x054A
230+
0xE5 0x057A
231+
0xE6 0x054B
232+
0xE7 0x057B
233+
0xE8 0x054C
234+
0xE9 0x057C
235+
0xEA 0x054D
236+
0xEB 0x057D
237+
0xEC 0x054E
238+
0xED 0x057E
239+
0xEE 0x054F
240+
0xEF 0x057F
241+
0xF0 0x0550
242+
0xF1 0x0580
243+
0xF2 0x0551
244+
0xF3 0x0581
245+
0xF4 0x0552
246+
0xF5 0x0582
247+
0xF6 0x0553
248+
0xF7 0x0583
249+
0xF8 0x0554
250+
0xF9 0x0584
251+
0xFA 0x0555
252+
0xFB 0x0585
253+
0xFC 0x0556
254+
0xFD 0x0586
255+
0xFE 0x055A

0 commit comments

Comments
 (0)