OSDN Git Service

Shift_JIS で 1 バイト目が 0xe0 以上の文字があったときに、他の文字コードと判定する可能性があったのを修正
[nkf/nkf.git] / nkf_test.pl
1 #!/usr/local/bin/perl
2 #
3 # nkf test program for nkf 1.7
4 #    Shinji KONO <kono@ie.u-ryukyu.ac.jp>
5 # Sun Aug 18 12:25:40 JST 1996
6 # Sun Nov  8 00:16:06 JST 1998
7 #
8 # This is useful when you add new patch on nkf.
9 # Since this test is too strict, faileurs may not mean
10 # wrong conversion. 
11 #
12 # nkf 1.5 differs on MIME decoding
13 # nkf 1.4 passes Basic Conversion tests
14 # nkf PDS version passes Basic Conversion tests  using "nkf -iB -oB "
15 #
16
17 # Basic Conversion
18 print "\nBasic Conversion test\n\n";
19
20 # I gave up simple literal quote because there are big difference
21 # on perl4 and perl5 on literal quote. Of course we cannot use
22 # jperl.
23
24 $example{'jis'} = unpack('u',<<'eofeof');
25 M1FER<W0@4W1A9V4@&R1"(3DQ(3%^2R%+?D]3&RA"(%-E8V]N9"!3=&%G92`;
26 M)$)0)TU:&RA"($AI<F%G86YA(!LD0B0B)"0D)B0H)"HD;R1R)',;*$(*2V%T
27 M86MA;F$@&R1")2(E)"4F)2@E*B5O)7(E<QLH0B!+:6=O=2`;)$(A)B%G(S`C
28 /029!)E@G(B=!*$`;*$(*
29 eofeof
30
31 $example{'sjis'} = unpack('u',<<'eofeof');
32 M1FER<W0@4W1A9V4@@5B)0(F>ED"6GIAR(%-E8V]N9"!3=&%G92"8I9=Y($AI
33 M<F%G86YA((*@@J*"I(*F@JB"[8+P@O$*2V%T86MA;F$@@T&#0X-%@T>#28./
34 >@Y*#DR!+:6=O=2"!18&'@D^"8(._@]:$081@A+X*
35 eofeof
36
37 $example{'euc'} = unpack('u',<<'eofeof');
38 M1FER<W0@4W1A9V4@H;FQH;'^RZ'+_L_3(%-E8V]N9"!3=&%G92#0I\W:($AI
39 M<F%G86YA(*2BI*2DIJ2HI*JD[Z3RI/,*2V%T86MA;F$@I:*EI*6FI:BEJJ7O
40 >I?*E\R!+:6=O=2"AIJ'GH["CP:;!IMBGHJ?!J,`*
41 eofeof
42
43 $example{'utf'} = unpack('u',<<'eofeof');
44 M1FER<W0@4W1A9V4@XX"%Z9FBY;^<YK.5YKJ`Z(65(%-E8V]N9"!3=&%G92#D
45 MN+SI@:4@2&ER86=A;F$@XX&"XX&$XX&&XX&(XX&*XX*/XX*2XX*3"DMA=&%K
46 M86YA(.."HN."I.."IN."J.."JN.#K^.#LN.#LR!+:6=O=2#C@[OBB)[OO)#O
47 .O*'.L<^)T)'0K^*5@@H`
48 eofeof
49
50
51 $example{'jis1'} = unpack('u',<<'eofeof');
52 M&R1";3%Q<$$L&RA""ALD0F4Z3F\;*$(*&R1"<FT;*$()&R1"/F5.3D]+&RA"
53 #"0D*
54 eofeof
55
56 $example{'sjis1'} = unpack('u',<<'eofeof');
57 8YU#ID)%+"N-9E^T*Z>L)C^.7S)AJ"0D*
58 eofeof
59
60 $example{'euc1'} = unpack('u',<<'eofeof');
61 8[;'Q\,&L"N6ZSN\*\NT)ON7.SL_+"0D*
62 eofeof
63
64 $example{'utf1'} = unpack('u',<<'eofeof');
65 AZ+J%Z:N/Z8JM"N>VNNFZEPKIM(D)Y+B*Z:"8Y+J8"0D*
66 eofeof
67
68 $example{'jis2'} = unpack('u',<<'eofeof');
69 +&R1".EA&(QLH0@H`
70 eofeof
71
72 $example{'sjis2'} = unpack('u',<<'eofeof');
73 %C=:3H0H`
74 eofeof
75
76 $example{'euc2'} = unpack('u',<<'eofeof');
77 %NMC&HPH`
78 eofeof
79
80 $example{'utf2'} = unpack('u',<<'eofeof');
81 'YI:.Z)>D"@``
82 eofeof
83
84 # From JIS
85
86 print "JIS  to JIS ... ";&test("$nkf   ",$example{'jis'},$example{'jis'});
87 print "JIS  to SJIS... ";&test("$nkf -s",$example{'jis'},$example{'sjis'});
88 print "JIS  to EUC ... ";&test("$nkf -e",$example{'jis'},$example{'euc'});
89 print "JIS  to UTF8... ";&test("$nkf -w",$example{'jis'},$example{'utf'});
90
91 # From SJIS
92
93 print "SJIS to JIS ... ";&test("$nkf -j",$example{'sjis'},$example{'jis'});
94 print "SJIS to SJIS... ";&test("$nkf -s",$example{'sjis'},$example{'sjis'});
95 print "SJIS to EUC ... ";&test("$nkf -e",$example{'sjis'},$example{'euc'});
96 print "SJIS to UTF8... ";&test("$nkf -w",$example{'sjis'},$example{'utf'});
97
98 # From EUC
99
100 print "EUC  to JIS ... ";&test("$nkf   ",$example{'euc'},$example{'jis'});
101 print "EUC  to SJIS... ";&test("$nkf -s",$example{'euc'},$example{'sjis'});
102 print "EUC  to EUC ... ";&test("$nkf -e",$example{'euc'},$example{'euc'});
103 print "EUC  to UTF8... ";&test("$nkf -w",$example{'euc'},$example{'utf'});
104
105 # From UTF8
106
107 print "UTF8 to JIS ... ";&test("$nkf   ",$example{'utf'},$example{'jis'});
108 print "UTF8 to SJIS... ";&test("$nkf -s",$example{'utf'},$example{'sjis'});
109 print "UTF8 to EUC ... ";&test("$nkf -e",$example{'utf'},$example{'euc'});
110 print "UTF8 to UTF8... ";&test("$nkf -w",$example{'utf'},$example{'utf'});
111
112
113
114 # From JIS
115
116 print "JIS  to JIS ... ";&test("$nkf   ",$example{'jis1'},$example{'jis1'});
117 print "JIS  to SJIS... ";&test("$nkf -s",$example{'jis1'},$example{'sjis1'});
118 print "JIS  to EUC ... ";&test("$nkf -e",$example{'jis1'},$example{'euc1'});
119 print "JIS  to UTF8... ";&test("$nkf -w",$example{'jis1'},$example{'utf1'});
120
121 # From SJIS
122
123 print "SJIS to JIS ... ";&test("$nkf -j",$example{'sjis1'},$example{'jis1'});
124 print "SJIS to SJIS... ";&test("$nkf -s",$example{'sjis1'},$example{'sjis1'});
125 print "SJIS to EUC ... ";&test("$nkf -e",$example{'sjis1'},$example{'euc1'});
126 print "SJIS to UTF8... ";&test("$nkf -w",$example{'sjis1'},$example{'utf1'});
127
128 # From EUC
129
130 print "EUC  to JIS ... ";&test("$nkf   ",$example{'euc1'},$example{'jis1'});
131 print "EUC  to SJIS... ";&test("$nkf -s",$example{'euc1'},$example{'sjis1'});
132 print "EUC  to EUC ... ";&test("$nkf -e",$example{'euc1'},$example{'euc1'});
133 print "EUC  to UTF8... ";&test("$nkf -w",$example{'euc1'},$example{'utf1'});
134
135 # From UTF8
136
137 print "UTF8 to JIS ... ";&test("$nkf   ",$example{'utf1'},$example{'jis1'});
138 print "UTF8 to SJIS... ";&test("$nkf -s",$example{'utf1'},$example{'sjis1'});
139 print "UTF8 to EUC ... ";&test("$nkf -e",$example{'utf1'},$example{'euc1'});
140 print "UTF8 to UTF8... ";&test("$nkf -w",$example{'utf1'},$example{'utf1'});
141
142 # Ambigous Case
143
144 $example{'amb'} = unpack('u',<<'eofeof');
145 MI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&E
146 MPK"QI<*PL:7"L+&EPK"QI<(*I<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*P
147 ML:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<(*I<*PL:7"L+&E
148 MPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"
149 ML+&EPK"QI<(*I<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"Q
150 MI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<(*I<*PL:7"L+&EPK"QI<*PL:7"
151 ML+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<(*
152 eofeof
153
154 $example{'amb.euc'} = unpack('u',<<'eofeof');
155 M&R1")4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25"
156 M,#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&R1")4(P,25",#$E0C`Q)4(P,25"
157 M,#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;
158 M*$(*&R1")4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P
159 M,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&R1")4(P,25",#$E0C`Q)4(P
160 M,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q
161 M)4(;*$(*&R1")4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q
162 >)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*
163 eofeof
164
165 $example{'amb.sjis'} = unpack('u',<<'eofeof');
166 M&RA))4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25"
167 M,#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&RA))4(P,25",#$E0C`Q)4(P,25"
168 M,#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;
169 M*$(*&RA))4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P
170 M,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&RA))4(P,25",#$E0C`Q)4(P
171 M,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q
172 M)4(;*$(*&RA))4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q
173 >)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*
174 eofeof
175
176 print "Ambiguous Case. ";
177     &test("$nkf",$example{'amb'},$example{'amb.euc'});
178
179 # Input assumption
180
181 print "SJIS  Input assumption ";
182     &test("$nkf -Sx",$example{'amb'},$example{'amb.sjis'});
183
184 # Broken JIS
185
186 print "Broken JIS ";
187     $input = $example{'jis'};
188     $input =~ s/\033//g;
189     &test("$nkf -Be",$input,$example{'euc'});
190 print "Broken JIS is safe on Normal JIS? ";
191     $input = $example{'jis'};
192     &test("$nkf -Be",$input,$example{'euc'});
193
194 # X0201 \e$B2>L>\e(B
195 # X0201->X0208 conversion
196 # X0208 aphabet -> ASCII
197 # X0201 \e$BAj8_JQ49\e(B
198
199 print "\nX0201 test\n\n";
200
201 $example{'x0201.sjis'} = unpack('u',<<'eofeof');
202 MD5.*<(-*@TR#3H-0@U*#2X--@T^#48-3"I%3B7""8()A@F*"8X)D@F6"9H*!
203 M@H*"@X*$@H6"AH*'"I%3BTR-AH%)@9>!E(&0@9.!3X&5@9:!:8%J@7R!>X&!
204 M@6V!;H%O@7"!CPJ4O(IPMK>X/;FZMMZWWKC>N=ZZWH+&"I2\BG#*W\O?S-_-
205 MW\[?M]^QW@K*W\O?S`IH86YK86MU(,K?R]_,I`K*W\O?S-VA"I2\BG""S(SC
206 !"@!"
207 eofeof
208
209 $example{'x0201.euc'} = unpack('u',<<'eofeof');
210 MP;2ST:6KI:VEKZ6QI;.EK*6NI;"ELJ6T"L&TL=&CP:/"H\.CQ*/%H\:CQZ/A
211 MH^*CXZ/DH^6CYJ/G"L&TM:VYYJ&JH?>A]*'PH?.AL*'UH?:ARJ'+H=VAW*'A
212 MH<ZASZ'0H=&A[PK(OK/1CK:.MXZX/8ZYCKJ.MH[>CK>.WHZXCMZ.N8[>CKJ.
213 MWJ3("LB^L]&.RH[?CLN.WX[,CM^.S8[?CLZ.WXZWCM^.L8[>"H[*CM^.RX[?
214 MCLP*:&%N:V%K=2".RH[?CLN.WX[,CJ0*CLJ.WX[+CM^.S([=CJ$*R+ZST:3.
215 #N.4*
216 eofeof
217
218 $example{'x0201.utf'} = unpack('u',<<'eofeof');
219 MY86HZ*>2XX*KXX*MXX*OXX*QXX*SXX*LXX*NXX*PXX*RXX*T"N6%J.B+L>^\
220 MH>^\HN^\H^^\I.^\I>^\IN^\I^^]@>^]@N^]@^^]A.^]A>^]AN^]APKEA:CH
221 MJ)CEC[?OO('OO*#OO(/OO(3OO(7OO+[OO(;OO(KOO(COO(GBB)+OO(OOO)WO
222 MO+OOO+WOO9OOO9WOOZ4*Y8V*Z*>2[[VV[[VW[[VX/>^]N>^]NN^]MN^^GN^]
223 MM^^^GN^]N.^^GN^]N>^^GN^]NN^^GN.!J`KEC8KHIY+OOHKOOI_OOHOOOI_O
224 MOHSOOI_OOHWOOI_OOH[OOI_OO;?OOI_OO;'OOIX*[[Z*[[Z?[[Z+[[Z?[[Z,
225 M"FAA;FMA:W4@[[Z*[[Z?[[Z+[[Z?[[Z,[[VD"N^^BN^^G^^^B^^^G^^^C.^^
226 2G>^]H0KEC8KHIY+C@:[EOHP*
227 eofeof
228
229 $example{'x0201.jis'} = unpack('u',<<'eofeof');
230 M&R1"030S424K)2TE+R4Q)3,E+"4N)3`E,B4T&RA""ALD0D$T,5$C02-"(T,C
231 M1"-%(T8C1R-A(V(C8R-D(V4C9B-G&RA""ALD0D$T-2TY9B$J(7<A="%P(7,A
232 M,"%U(78A2B%+(5TA7"%A(4XA3R%0(5$A;QLH0@H;)$)(/C-1&RA)-C<X&RA"
233 M/1LH23DZ-EXW7CA>.5XZ7ALD0B1(&RA""ALD0D@^,U$;*$E*7TM?3%]-7TY?
234 M-U\Q7ALH0@H;*$E*7TM?3!LH0@IH86YK86MU(!LH24I?2U],)!LH0@H;*$E*
235 97TM?3%TA&RA""ALD0D@^,U$D3CAE&RA""@``
236 eofeof
237
238 $example{'x0201.sosi'} = unpack('u',<<'eofeof');
239 M&R1"030S424K)2TE+R4Q)3,E+"4N)3`E,B4T&RA*"ALD0D$T,5$C02-"(T,C
240 M1"-%(T8C1R-A(V(C8R-D(V4C9B-G&RA*"ALD0D$T-2TY9B$J(7<A="%P(7,A
241 M,"%U(78A2B%+(5TA7"%A(4XA3R%0(5$A;QLH2@H;)$)(/C-1&RA*#C8W.`\;
242 M*$H]#CDZ-EXW7CA>.5XZ7@\;)$(D2!LH2@H;)$)(/C-1&RA*#DI?2U],7TU?
243 M3E\W7S%>#PH.2E]+7TP/&RA*"FAA;FMA:W4@#DI?2U],)`\;*$H*#DI?2U],
244 672$/&RA*"ALD0D@^,U$D3CAE&RA""@``
245 eofeof
246
247 $example{'x0201.x0208'} = unpack('u',<<'eofeof');
248 M&R1"030S424K)2TE+R4Q)3,E+"4N)3`E,B4T&RA""ALD0D$T,5$;*$)!0D-$
249 M149'86)C9&5F9PH;)$)!-#4M.68;*$(A0",D)5XF*B@I+2L]6UU[?1LD0B%O
250 M&RA""ALD0D@^,U$E*R4M)2\;*$(]&R1")3$E,R4L)2XE,"4R)30D2!LH0@H;
251 M)$)(/C-1)5$E5"57)5HE724M(2PE(B$K&RA""ALD0B51)50E51LH0@IH86YK
252 M86MU(!LD0B51)50E52$B&RA""ALD0B51)50E525S(2,;*$(*&R1"2#XS421.
253 &.&4;*$(*
254 eofeof
255
256 # -X is necessary to allow X0201 in SJIS
257 # -Z convert X0208 alphabet to ASCII
258 print "X0201 conversion: SJIS ";
259     &test("$nkf -XZ",$example{'x0201.sjis'},$example{'x0201.x0208'});
260 print "X0201 conversion: JIS  ";
261     &test("$nkf -Z",$example{'x0201.jis'},$example{'x0201.x0208'});
262 print "X0201 conversion:SI/SO ";
263     &test("$nkf -Z",$example{'x0201.sosi'},$example{'x0201.x0208'});
264 print "X0201 conversion: EUC  ";
265     &test("$nkf -Z",$example{'x0201.euc'},$example{'x0201.x0208'});
266 print "X0201 conversion: UTF8 ";
267     &test("$nkf -Z",$example{'x0201.utf'},$example{'x0201.x0208'});
268 # -x means X0201 output
269 print "X0201 output: SJIS     ";
270     &test("$nkf -xs",$example{'x0201.euc'},$example{'x0201.sjis'});
271 print "X0201 output: JIS      ";
272     &test("$nkf -xj",$example{'x0201.sjis'},$example{'x0201.jis'});
273 print "X0201 output: EUC      ";
274     &test("$nkf -xe",$example{'x0201.jis'},$example{'x0201.euc'});
275 print "X0201 output: UTF8     ";
276     &test("$nkf -xw",$example{'x0201.jis'},$example{'x0201.utf'});
277
278 # MIME decode
279
280 print "\nMIME test\n\n";
281
282 # MIME ISO-2022-JP
283
284 $example{'mime.iso2022'} = unpack('u',<<'eofeof');
285 M/3])4T\M,C`R,BU*4#]"/T=Y4D%.144W96E23TI566Q/4U9)1WEH2S\]"CT_
286 M:7-O+3(P,C(M2E`_0C]'>5)!3D5%-V5I4D]*55EL3U-624=Y:$L_/0H]/VES
287 M;RTR,#(R+4I0/U$_/3%")$(D1B11/3%"*$)?96YD/ST*&R1`)#TD)B0K)$H;
288 M*$H@/3])4T\M,C`R,BU*4#]"/T=Y4D%.144W96E23U!Y:S=D:'-O4V<]/3\]
289 M(&5N9"!O9B!L:6YE"CT_25-/+3(P,C(M2E`_0C]'>5)!3D5%-V5I4D]0>6LW
290 M9&AS;U-G/3T_/2`]/TE33RTR,#(R+4I0/T(_1WE204Y%13=E:5)/4'EK-V1H
291 M<V]39ST]/ST*0G)O:V5N(&-A<V4*/3])4T\M,C`R,BU*4#]"/T=Y4D%.144W
292 M96E23U!Y:S=D"FAS;U-G/3T_/2`]/TE33RTR,`HR,BU*4#]"/T=Y4D%.144W
293 M96E23U!Y:S=D:'-O4V<]/3\]"CT_25-/+3(P,C(M2E`_0C]'>5)!3D5%-V5I
294 44D]*55EL3QM;2U-624=Y:$L_/0H_
295 eofeof
296
297 $example{'mime.ans.strict'} = unpack('u',<<'eofeof');
298 M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11
299 M&RA"(&5N9`H;)$(D/20F)"LD2ALH0B`;)$(T03MZ)$X_*3MV&RA"96YD(&]F
300 M(&QI;F4*&R1"-$$[>B1./RD[=C1!.WHD3C\I.W8;*$(*0G)O:V5N(&-A<V4*
301 M/3])4T\M,C`R,BU*4#]"/T=Y4D%.144W96E23U!Y:S=D"FAS;U-G/3T_/2`]
302 M/TE33RTR,`HR,BU*4#]"/T=Y4D%.144W96E23U!Y:S=D:'-O4V<]/3\]"CT_
303 L25-/+3(P,C(M2E`_0C]'>5)!3D5%-V5I4D]*55EL3QM;2U-624=Y:$L_/0H_
304 eofeof
305
306 $example{'mime.unbuf.strict'} = unpack('u',<<'eofeof');
307 M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11
308 M&RA"(&5N9`H;)$(D/20F)"LD2ALH0B`;)$(T03MZ)$X_*3MV&RA"96YD(&]F
309 M(&QI;F4*&R1"-$$[>B1./RD[=C1!.WHD3C\I.W8;*$(*0G)O:V5N(&-A<V4*
310 M&R1"-$$[>B1./RD;*$)H<V]39ST]/ST@/3])4T\M,C`*,C(M2E`_0C]'>5)!
311 M3D5%-V5I4D]0>6LW9&AS;U-G/3T_/0H;)$(T03MZ)$XE1ALH0EM+4U9)1WEH
312 $2S\]"F5I
313 eofeof
314
315 $example{'mime.ans'} = unpack('u',<<'eofeof');
316 M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11
317 M&RA"(&5N9`H;)$(D/20F)"LD2ALH0B`;)$(T03MZ)$X_*3MV&RA"96YD(&]F
318 M(&QI;F4*&R1"-$$[>B1./RD[=C1!.WHD3C\I.W8;*$(*0G)O:V5N(&-A<V4*
319 M&R1"-$$[>B1./RD;*$)H<V]39ST]/ST@&R1"-$$[>B1./RD[=ALH0@H;)$(T
320 603MZ)$XE1ALH0EM+4U9)1WEH2S\]"@`*
321 eofeof
322
323 $example{'mime.unbuf'} = unpack('u',<<'eofeof');
324 M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11
325 M&RA"(&5N9`H;)$(D/20F)"LD2ALH0B`;)$(T03MZ)$X_*3MV&RA"96YD(&]F
326 M(&QI;F4*&R1"-$$[>B1./RD[=C1!.WHD3C\I.W8;*$(*0G)O:V5N(&-A<V4*
327 M&R1"-$$[>B1./RD;*$)H<V]39ST]/ST@&R1"-$$[>B1./RD[=ALH0@H;)$(T
328 603MZ)$XE1ALH0EM+4U9)1WEH2S\]"@`*
329 eofeof
330
331 $example{'mime.base64'} = unpack('u',<<'eofeof');
332 M9W-M5"])3&YG<FU#>$I+-&=Q=4,S24LS9W%Q0E%:3TUI-39,,S0Q-&=S5T)1
333 M43!+9VUA1%9O3T@*9S)+1%1O3'=K8C)1;$E+;V=Q2T-X24MG9W5M0W%*3EEG
334 <<T=#>$E+9V=U;4,X64Q&9W)70S592VMG<6U""F=Q
335 eofeof
336
337 $example{'mime.base64.ans'} = unpack('u',<<'eofeof');
338 M&R1")$M&?B1I)#LD1D0Z)"TD7B0Y)"PA(D5L-7XV83E9)$<A(ALH0@T*&R1"
339 M(T<E-R5G)4,E+R1R0C\_="0J)"0D1B0B)&LD*D4Y)$,D1B0B)&LD<R1')#<D
340 (9R0F)"L;*$(E
341 eofeof
342
343 # print "Next test is expected to Fail.\n";
344 print "MIME decode (strict)   ";
345     $tmp = &test("$nkf -mS",$example{'mime.iso2022'},$example{'mime.ans.strict'});
346
347 $example{'mime.ans.alt'} = unpack('u',<<'eofeof');
348 M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11
349 M&RA"96YD"ALD0B0])"8D*R1*&RA"&R1"-$$[>B1./RD[=ALH0F5N9&]F;&EN
350 M90H;)$(T03MZ)$X_*3MV-$$[>B1./RD[=ALH0@I"<F]K96YC87-E"ALD0C1!
351 H.WHD3C\I.W8T03MZ)$X_*3MV&RA""ALD0C1!.WHD3B5&)3DE)!LH0@``
352 eofeof
353
354 $example{'mime.unbuf.alt'} = unpack('u',<<'eofeof');
355 M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11
356 M&RA"96YD"ALD0B0])"8D*R1*&RA"&R1"-$$[>B1./RD[=ALH0F5N9&]F;&EN
357 M90H;)$(T03MZ)$X_*3MV-$$[>B1./RD[=ALH0@I"<F]K96YC87-E"ALD0C1!
358 H.WHD3C\I.W8T03MZ)$X_*3MV&RA""ALD0C1!.WHD3B5&)3DE)!LH0@``
359 eofeof
360
361 print "MIME decode (nonstrict)";
362     $tmp = &test("$nkf -mN",$example{'mime.iso2022'},$example{'mime.ans'},$example{'mime.ans.alt'});
363     # open(OUT,">tmp1");print OUT pack('u',$tmp);close(OUT);
364 # unbuf mode implies more pessimistic decode
365 print "MIME decode (unbuf)    ";
366     $tmp = &test("$nkf -mNu",$example{'mime.iso2022'},$example{'mime.unbuf'},$example{'mime.unbuf.alt'});
367     # open(OUT,">tmp2");print OUT pack('u',$tmp);close(OUT);
368 print "MIME decode (base64)   ";
369     &test("$nkf -mB",$example{'mime.base64'},$example{'mime.base64.ans'});
370
371 # MIME ISO-8859-1
372
373 $example{'mime.is8859'} = unpack('u',<<'eofeof');
374 M/3])4T\M.#@U.2TQ/U$_*CU#-V%V83\_/2`*4&5E<B!4]G)N9W)E;@I,87-S
375 M92!(:6QL97+X92!0971E<G-E;B`@7"`B36EN(&MA97!H97-T(&AA<B!F86%E
376 M="!E="!F;V5L(2(*06%R:'5S(%5N:79E<G-I='DL($1%3DU!4DL@(%P@(DUI
377 <;B!KYG!H97-T(&AA<B!FY65T(&5T(&;X;"$B"@!K
378 eofeof
379
380 $example{'mime.is8859.ans'} = unpack('u',<<'eofeof');
381 M*L=A=F$_(`I0965R(%3V<FYG<F5N"DQA<W-E($AI;&QE<OAE(%!E=&5R<V5N
382 M("!<(")-:6X@:V%E<&AE<W0@:&%R(&9A865T(&5T(&9O96PA(@I!87)H=7,@
383 M56YI=F5R<VET>2P@1$5.34%22R`@7"`B36EN(&OF<&AE<W0@:&%R(&;E970@
384 )970@9OAL(2(*
385 eofeof
386
387 # Without -l, ISO-8859-1 was handled as X0201.
388
389 print "MIME ISO-8859-1 (Q)    ";
390     &test("$nkf -ml",$example{'mime.is8859'},$example{'mime.is8859.ans'});
391
392 # test for -f is not so simple.
393
394 print "\nBug Fixes\n\n";
395
396 # test_data/cr
397
398 $example{'test_data/cr'} = unpack('u',<<'eofeof');
399 1I,:DN:3(#71E<W0-=&5S=`T`
400 eofeof
401
402 $example{'test_data/cr.ans'} = unpack('u',<<'eofeof');
403 7&R1")$8D.21(&RA""G1E<W0*=&5S=`H`
404 eofeof
405
406 print "test_data/cr    ";
407     &test("$nkf -d",$example{'test_data/cr'},$example{'test_data/cr.ans'});
408 # test_data/fixed-qencode
409
410 $example{'test_data/fixed-qencode'} = unpack('u',<<'eofeof');
411 M("`@("`@("`],4(D0CYE/STS1#TQ0BA""B`@("`@("`@/3%")$(^93TS1CTS
412 '1#TQ0BA""@``
413 eofeof
414
415 $example{'test_data/fixed-qencode.ans'} = unpack('u',<<'eofeof');
416 F("`@("`@("`;)$(^93\]&RA""B`@("`@("`@&R1"/F4_/1LH0@H`
417 eofeof
418
419 print "test_data/fixed-qencode    ";
420     &test("$nkf -mQ",$example{'test_data/fixed-qencode'},$example{'test_data/fixed-qencode.ans'});
421 # test_data/long-fold-1
422
423 $example{'test_data/long-fold-1'} = unpack('u',<<'eofeof');
424 MI,JDK*2DI,JDK*2DI,JDK*'!I*2DKJ3GI*:DK*2BI.JDWJ2WI,:AHJ2SI.RD
425 M\J2]I,ZDWJ3>I**DQ*2KI*:DR*&BI,FDIJ3BI-^DT*2HI*RD[Z3KI*2DMZ&B
426 MI,BDP:3EI*:DQZ3!I.>D\Z2NI.RDZZ2KI.*DMZ3SI,JDI*&C"J2SI+.DSR!#
427 M4B],1B"DSKG4H:,-"J2SI+.DSR!#4B"DSKG4H:,-I+.DLZ3/($Q&+T-2(*3.
428 9N=2AHPH-"J2SI+.DSR!,1B"DSKG4H:,*"@``
429 eofeof
430
431 $example{'test_data/long-fold-1.ans'} = unpack('u',<<'eofeof');
432 M&R1")$HD+"0D)$HD+"0D)$HD+"%!)"0D+B1G)"8D+"0B)&HD7B0W)$8A(B0S
433 M)&PD<B0])$XD7B1>)"(D1"0K&RA""ALD0B0F)$@A(B1))"8D8B1?)%`D*"0L
434 M)&\D:R0D)#<A(B1()$$D920F)$<D021G)',D+B1L)&LD*R1B)#<D<QLH0@H;
435 M)$(D2B0D(2,;*$(*&R1")#,D,R1/&RA"($-2+TQ&(!LD0B1..50A(QLH0@H;
436 M)$(D,R0S)$\;*$(@0U(@&R1")$XY5"$C&RA""ALD0B0S)#,D3QLH0B!,1B]#
437 M4B`;)$(D3CE4(2,;*$(*"ALD0B0S)#,D3QLH0B!,1B`;)$(D3CE4(2,;*$(*
438 !"@``
439 eofeof
440
441 print "test_data/long-fold-1    ";
442     &test("$nkf -F60",$example{'test_data/long-fold-1'},$example{'test_data/long-fold-1.ans'});
443 # test_data/long-fold
444
445 $example{'test_data/long-fold'} = unpack('u',<<'eofeof');
446 MI,JDK*2DI,JDK*2DI,JDK*'!I*2DKJ3GI*:DK*2BI.JDWJ2WI,:AHJ2SI.RD
447 M\J2]I,ZDWJ3>I**DQ*2KI*:DR*&BI,FDIJ3BI-^DT*2HI*RD[Z3KI*2DMZ&B
448 MI,BDP:3EI*:DQZ3!I.>D\Z2NI.RDZZ2KI.*DMZ3SI,JDI*&C"J2SI+.DS\.[
449 'I*2YU*&C"@``
450 eofeof
451
452 $example{'test_data/long-fold.ans'} = unpack('u',<<'eofeof');
453 M&R1")$HD+"0D)$HD+"0D)$HD+"%!)"0D+B1G)"8D+"0B)&HD7B0W)$8A(B0S
454 M)&PD<B0])$XD7B1>)"(D1"0K&RA""ALD0B0F)$@A(B1))"8D8B1?)%`D*"0L
455 M)&\D:R0D)#<A(B1()$$D920F)$<D021G)',D+B1L)&LD*R1B)#<D<QLH0@H;
456 :)$(D2B0D(2,D,R0S)$]#.R0D.50A(QLH0@H`
457 eofeof
458
459 print "test_data/long-fold    ";
460     &test("$nkf -f60",$example{'test_data/long-fold'},$example{'test_data/long-fold.ans'});
461 # test_data/mime_out
462
463 $example{'test_data/mime_out'} = unpack('u',<<'eofeof');
464 M"BTM+2T*4W5B:F5C=#H@86%A82!A86%A(&%A86$@86%A82!A86%A(&%A86$@
465 M86%A82!A86%A(&%A86$@86%A82!A86%A(&%A86$@86%A82!A86%A"BTM+2T*
466 M4W5B:F5C=#H@I**DI*2FI*BDJJ2KI*VDKZ2QI+.DM:2WI+FDNZ2]I+^DP:3$
467 MI,:DR*3*I,NDS*3-I,ZDSZ32I-6DV*3;I-ZDWZ3@I.&DXJ3DI*2DYJ2HI.@*
468 M+2TM+0I3=6)J96-T.B!A86%A(&%A86$@86%A82!A86%A(&%A86$@86%A82!A
469 I86%A(*2BI*2DIJ2HI*H@86%A82!A86%A(&%A86$@86%A80HM+2TM"@H`
470 eofeof
471
472 $example{'test_data/mime_out.ans'} = unpack('u',<<'eofeof');
473 M"BTM+2T*4W5B:F5C=#H@86%A82!A86%A(&%A86$@86%A82!A86%A(&%A86$@
474 M86%A82!A86%A(&%A86$*(&%A86$@86%A82!A86%A(&%A86$@86%A80HM+2TM
475 M"E-U8FIE8W0Z(#T_25-/+3(P,C(M2E`_0C]'>5)#2D-):TI#46U*0V=K2VE1
476 M<DI#,&M,>5%X2D1-:TY343-*1&MK3WAS;U%G/3T_/2`*"3T_25-/+3(P,C(M
477 M2E`_0C]'>5)#2D0P:U!Y4D)*15%K4FE224I%;VM3>5)-2D4P:U1I4E!*1DEK
478 M5E-264=Y:$,_/2`*"3T_25-/+3(P,C(M2E`_0C]'>5)#2D9S:UAI4F9*1T%K
479 M65-2:4I'46M*0U)M2D-G:V%"<V]19ST]/ST@"BTM+2T*4W5B:F5C=#H@86%A
480 M82!A86%A(&%A86$@86%A82!A86%A(&%A86$@86%A82`]/TE33RTR,#(R+4I0
481 M/T(_1WE20TI#26)+14D]/ST@"@D]/TE33RTR,#(R+4I0/T(_1WE20TI#46M*
482 J:5%O2D-O8DM%23T_/2`@86%A80H@86%A82!A86%A(&%A86$*+2TM+0H*
483 eofeof
484
485 print "test_data/mime_out    ";
486     &test("$nkf -M",$example{'test_data/mime_out'},$example{'test_data/mime_out.ans'});
487 # test_data/multi-line
488
489 $example{'test_data/multi-line'} = unpack('u',<<'eofeof');
490 MI,JDK*2DI,JDK*2DI,JDK*'!I*2DKJ3GI*:DK*2BI.JDWJ2WI,:AH@"DLZ3L
491 MI/*DO:3.I-ZDWJ2BI,2DJZ2FI,BAHJ3)I*:DXJ3?I-"DJ*2LI.^DZZ2DI+>A
492 MHJ3(I,&DY:2FI,>DP:3GI/.DKJ3LI.NDJZ3BI+>D\Z3*I*2AHPJDLZ2SI,_#
493 8NZ2DN=2AHP`*I+.DLZ3/P[NDI+G4H:,*
494 eofeof
495
496 $example{'test_data/multi-line.ans'} = unpack('u',<<'eofeof');
497 MI,JDK*2DI,JDK*2DI,JDK*'!I*2DKJ3GI*:DK*2BI.JDWJ2WI,:AH@"DLZ3L
498 MI/*DO:3.I-ZDWJ2BI,2DJZ2FI,BAHJ3)I*:DXJ3?I-"DJ*2LI.^DZZ2DI+>A
499 MHJ3(I,&DY:2FI,>DP:3GI/.DKJ3LI.NDJZ3BI+>D\Z3*I*2AHPJDLZ2SI,_#
500 8NZ2DN=2AHP`*I+.DLZ3/P[NDI+G4H:,*
501 eofeof
502
503 print "test_data/multi-line    ";
504     &test("$nkf -e",$example{'test_data/multi-line'},$example{'test_data/multi-line.ans'});
505 # test_data/nkf-19-bug-1
506
507 $example{'test_data/nkf-19-bug-1'} = unpack('u',<<'eofeof');
508 ,I*:DJZ2D"KK8QJ,*
509 eofeof
510
511 $example{'test_data/nkf-19-bug-1.ans'} = unpack('u',<<'eofeof');
512 8&R1")"8D*R0D&RA""ALD0CI81B,;*$(*
513 eofeof
514
515 print "test_data/nkf-19-bug-1    ";
516     &test("$nkf -Ej",$example{'test_data/nkf-19-bug-1'},$example{'test_data/nkf-19-bug-1.ans'});
517 # test_data/nkf-19-bug-2
518
519 $example{'test_data/nkf-19-bug-2'} = unpack('u',<<'eofeof');
520 %I-NDL@H`
521 eofeof
522
523 $example{'test_data/nkf-19-bug-2.ans'} = unpack('u',<<'eofeof');
524 %I-NDL@H`
525 eofeof
526
527 print "test_data/nkf-19-bug-2    ";
528     &test("$nkf -Ee",$example{'test_data/nkf-19-bug-2'},$example{'test_data/nkf-19-bug-2.ans'});
529 # test_data/nkf-19-bug-3
530
531 $example{'test_data/nkf-19-bug-3'} = unpack('u',<<'eofeof');
532 8[;'Q\,&L"N6ZSN\*\NT)ON7.SL_+"0D*
533 eofeof
534
535 $example{'test_data/nkf-19-bug-3.ans'} = unpack('u',<<'eofeof');
536 8[;'Q\,&L"N6ZSN\*\NT)ON7.SL_+"0D*
537 eofeof
538
539 print "test_data/nkf-19-bug-3    ";
540     &test("$nkf -e",$example{'test_data/nkf-19-bug-3'},$example{'test_data/nkf-19-bug-3.ans'});
541 # test_data/non-strict-mime
542
543 $example{'test_data/non-strict-mime'} = unpack('u',<<'eofeof');
544 M/3])4T\M,C`R,BU*4#]"/PIG<U-#;V]+.6=R-D-O;TQ%9W1Y0W0T1D-$46].
545 M0V\V16=S,D]N;T999S1Y1%=)3$IG=4-0:UD*2W!G<FU#>$E+:6=R,D-V;TMI
546 ,9W-30V]O3&,*/ST*
547 eofeof
548
549 $example{'test_data/non-strict-mime.ans'} = unpack('u',<<'eofeof');
550 M&R1")$8D)"0_)$`D)"1&)%XD.2$C&RA"#0H-"ALD0CMD)$\[?B$Y)6PE.21+
551 <)&(]<20K)#LD1B0D)#\D0"0D)$8D)"1>&RA""@``
552 eofeof
553
554 print "test_data/non-strict-mime    ";
555     &test("$nkf -mN",$example{'test_data/non-strict-mime'},$example{'test_data/non-strict-mime.ans'});
556 # test_data/q-encode-softrap
557
558 $example{'test_data/q-encode-softrap'} = unpack('u',<<'eofeof');
559 H/3%")$(T03MZ)3T*,R$\)4DD3CTQ0BA""CTQ0B1"2E$T.3TQ0BA""@``
560 eofeof
561
562 $example{'test_data/q-encode-softrap.ans'} = unpack('u',<<'eofeof');
563 >&R1"-$$[>B4S(3PE221.&RA""ALD0DI1-#D;*$(*
564 eofeof
565
566 print "test_data/q-encode-softrap    ";
567     &test("$nkf -mQ",$example{'test_data/q-encode-softrap'},$example{'test_data/q-encode-softrap.ans'});
568 # test_data/rot13
569
570 $example{'test_data/rot13'} = unpack('u',<<'eofeof');
571 MI+.D\Z3+I,&DSZ&BS:W"]*3(I*2DI*3>I+FAHPH*;FMF('9E<BXQ+CDR(*3R
572 MS?C-T:2UI+NDQJ2DI+^DP*2DI,:DI*3>I+FDK*&B05-#24D@I,O"T*2WI,8@
573 M4D]4,3,@I*P*P+6DMZ2OQK"DI*3&I*2DRJ2DI.BDIJ3'H:*PRK*\I,ZDZ*2F
574 MI,O*T;2YI+6D[*3>I+ND\Z&C"@HE(&5C:&\@)VAO9V4G('P@;FMF("UR"FAO
575 #9V4*
576 eofeof
577
578 $example{'test_data/rot13.ans'} = unpack('u',<<'eofeof');
579 M&R1"4V)31%-Z4W!3?E!1?%QQ15-W4U-34U,O4VA04ALH0@H*87AS(&ER92XQ
580 M+CDR(!LD0E-#?$E\(E-D4VI3=5-34VY3;U-34W534U,O4VA36U!1&RA"3D90
581 M5E8@&R1"4WIQ(5-F4W4;*$(@14)',3,@&R1"4UL;*$(*&R1";V139E->=5]3
582 M4U-U4U-3>5-34SE355-V4%%?>6%K4WU3.5-54WIY(F-H4V13/5,O4VI31%!2
583 A&RA""@HE(')P=6(@)W5B='(G('P@87AS("UE"G5B='(*
584 eofeof
585
586 print "test_data/rot13    ";
587     &test("$nkf -r",$example{'test_data/rot13'},$example{'test_data/rot13.ans'});
588 # test_data/slash
589
590 $example{'test_data/slash'} = unpack('u',<<'eofeof');
591 7("`]/U8\5"U5.5=%2RTK.U<U32LE+PH`
592 eofeof
593
594 $example{'test_data/slash.ans'} = unpack('u',<<'eofeof');
595 7("`]/U8\5"U5.5=%2RTK.U<U32LE+PH`
596 eofeof
597
598 print "test_data/slash    ";
599     &test("$nkf  ",$example{'test_data/slash'},$example{'test_data/slash.ans'});
600 # test_data/z1space-0
601
602 $example{'test_data/z1space-0'} = unpack('u',<<'eofeof');
603 "H:$`
604 eofeof
605
606 $example{'test_data/z1space-0.ans'} = unpack('u',<<'eofeof');
607 "H:$`
608 eofeof
609
610 print "test_data/z1space-0    ";
611     &test("$nkf -e -Z",$example{'test_data/z1space-0'},$example{'test_data/z1space-0.ans'});
612 # test_data/z1space-1
613
614 $example{'test_data/z1space-1'} = unpack('u',<<'eofeof');
615 "H:$`
616 eofeof
617
618 $example{'test_data/z1space-1.ans'} = unpack('u',<<'eofeof');
619 !(```
620 eofeof
621
622 print "test_data/z1space-1    ";
623     &test("$nkf -e -Z1",$example{'test_data/z1space-1'},$example{'test_data/z1space-1.ans'});
624 # test_data/z1space-2
625
626 $example{'test_data/z1space-2'} = unpack('u',<<'eofeof');
627 "H:$`
628 eofeof
629
630 $example{'test_data/z1space-2.ans'} = unpack('u',<<'eofeof');
631 "("``
632 eofeof
633
634 print "test_data/z1space-2    ";
635     &test("$nkf -e -Z2",$example{'test_data/z1space-2'},$example{'test_data/z1space-2.ans'});
636
637 # end