📄 nkf_test.pl
字号:
#!/usr/local/bin/perl## nkf test program for nkf 1.7# Shinji KONO <kono@ie.u-ryukyu.ac.jp># Sun Aug 18 12:25:40 JST 1996# Sun Nov 8 00:16:06 JST 1998## This is useful when you add new patch on nkf.# Since this test is too strict, faileurs may not mean# wrong conversion. ## nkf 1.5 differs on MIME decoding# nkf 1.4 passes Basic Conversion tests# nkf PDS version passes Basic Conversion tests using "nkf -iB -oB "#$nkf = "./nkf";# $nkf = "doscmd nkf.exe";# If you want to see the testing process, set next flag.$detail_all = 0;# &library_test0();sub test {# use NKF;# &library_test(@_); &command_test(@_);}sub command_test { local ($nkf,$in,$ans,$detail) = @_; local ($result); $result = ''; open(OUT,"> nkf.in"); print OUT $in; close(OUT); system("$nkf <nkf.in >nkf.out"); # easy open(IN,"< nkf.out"); print STDERR "\nINPUT:\n",$in if ($detail || $detail_all); print STDERR "\nEXPECT:\n", $ans if ($detail || $detail_all); while(<IN>) { $result .= $_; } print STDERR "\nGOT:\n",$result if ($detail || $detail_all); print (($result eq $ans)?"Ok\n":"Fail\n"); return $result;}sub library_test { local ($nkf,$in,$ans,$detail) = @_; local ($result); $nkf =~ s/^[^_]* //; print "\nINPUT:\n",$in if ($detail || $detail_all); print "\nEXPECT:\n", $ans if ($detail || $detail_all); $result = NKF::nkf($nkf,$in); print "\nGOT:\n",$result if ($detail || $detail_all); print (($result eq $ans)?"Ok\n":"Fail\n"); return $result;}sub librrary_test0 {BEGIN { $| = 1; print "1..3\n"; }END {print "not ok 1\n" unless $loaded;} use NKF; $loaded = 1; print "ok 1\n"; ######################### End of black magic. # Insert your test code below (better if it prints "ok 13" # (correspondingly "not ok 13") depending on the success of chunk 13 # of the test code): if ( nkf("-m","-e","1") ) { print "ok 2\n"; } else { print "no 2\n"; } $output = nkf("\033\$@#1#3#2%B"); if ($output) { # print $output,"\n"; print "ok 3\n"; } else { print "no 3\n"; } $output = nkf("-Zj","\033\$@#1#3#2%B"); if ($output) { # print $output,"\n"; print "ok 4\n"; } else { print "no 4\n"; } # conversion makes strings longer $output = "\244\306 " x 1024; $old = length($output); $output = nkf("-j",$output); if ($output) { # print $output,"\n"; print "ok 5 $old ",length($output),"\n"; } else { print "no 5\n"; }}# Basic Conversionprint "\nBasic Conversion test\n\n";# I gave up simple literal quote because there are big difference# on perl4 and perl5 on literal quote. Of course we cannot use# jperl.$example{'jis'} = unpack('u',<<'eofeof');M1FER<W0@4W1A9V4@&R1"(3DQ(3%^2R%+?D]3&RA"(%-E8V]N9"!3=&%G92`;M)$)0)TU:&RA"($AI<F%G86YA(!LD0B0B)"0D)B0H)"HD;R1R)',;*$(*2V%TM86MA;F$@&R1")2(E)"4F)2@E*B5O)7(E<QLH0B!+:6=O=2`;)$(A)B%G(S`C/029!)E@G(B=!*$`;*$(*eofeof$example{'sjis'} = unpack('u',<<'eofeof');M1FER<W0@4W1A9V4@@5B)0(F>ED"6GIAR(%-E8V]N9"!3=&%G92"8I9=Y($AIM<F%G86YA((*@@J*"I(*F@JB"[8+P@O$*2V%T86MA;F$@@T�X-%@T>#28./>@Y*#DR!+:6=O=2"!18&'@D^"8(._@]:$081@A+X*eofeof$example{'euc'} = unpack('u',<<'eofeof');M1FER<W0@4W1A9V4@H;FQH;'^RZ'+_L_3(%-E8V]N9"!3=&%G92#0I\W:($AIM<F%G86YA(*2BI*2DIJ2HI*JD[Z3RI/,*2V%T86MA;F$@I:*EI*6FI:BEJJ7O>I?*E\R!+:6=O=2"AIJ'GH["CP:;!IMBGHJ?!J,`*eofeof# From JISprint "JIS to JIS ... ";&test("$nkf ",$example{'jis'},$example{'jis'});print "JIS to SJIS... ";&test("$nkf -s",$example{'jis'},$example{'sjis'});print "JIS to EUC ... ";&test("$nkf -e",$example{'jis'},$example{'euc'});# From SJISprint "SJIS to JIS ... ";&test("$nkf -j",$example{'sjis'},$example{'jis'});print "SJIS to SJIS... ";&test("$nkf -s",$example{'sjis'},$example{'sjis'});print "SJIS to EUC ... ";&test("$nkf -e",$example{'sjis'},$example{'euc'});# From EUCprint "EUC to JIS ... ";&test("$nkf ",$example{'euc'},$example{'jis'});print "EUC to SJIS... ";&test("$nkf -s",$example{'euc'},$example{'sjis'});print "EUC to EUC ... ";&test("$nkf -e",$example{'euc'},$example{'euc'});# Ambigous Case$example{'amb'} = unpack('u',<<'eofeof');MI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EMPK"QI<*PL:7"L+&EPK"QI<(*I<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PML:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<(*I<*PL:7"L+&EMPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"ML+&EPK"QI<(*I<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QMI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<(*I<*PL:7"L+&EPK"QI<*PL:7"ML+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<*PL:7"L+&EPK"QI<(*eofeof$example{'amb.euc'} = unpack('u',<<'eofeof');M&R1")4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25"M,#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&R1")4(P,25",#$E0C`Q)4(P,25"M,#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;M*$(*&R1")4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(PM,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&R1")4(P,25",#$E0C`Q)4(PM,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`QM)4(;*$(*&R1")4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q>)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*eofeof$example{'amb.sjis'} = unpack('u',<<'eofeof');M&RA))4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25"M,#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&RA))4(P,25",#$E0C`Q)4(P,25"M,#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;M*$(*&RA))4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(PM,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*&RA))4(P,25",#$E0C`Q)4(PM,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`QM)4(;*$(*&RA))4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q>)4(P,25",#$E0C`Q)4(P,25",#$E0C`Q)4(;*$(*eofeofprint "Ambiguous Case. "; &test("$nkf",$example{'amb'},$example{'amb.euc'});# Input assumptionprint "SJIS Input assumption "; &test("$nkf -Sx",$example{'amb'},$example{'amb.sjis'});# X0201 $B2>L>(B# X0201->X0208 conversion# X0208 aphabet -> ASCII# X0201 $BAj8_JQ49(Bprint "\nX0201 test\n\n";$example{'x0201.sjis'} = unpack('u',<<'eofeof');MD5.*<(-*@TR#3H-0@U*#2X--@T^#48-3"I%3B7""8()A@F*"8X)D@F6"9H*!M@H*"@X*$@H6"AH*'"I%3BTR-AH%)@9>!E(&0@9.!3X&5@9:!:8%J@7R!>X&!M@6V!;H%O@7"!CPJ4O(IPMK>X/;FZMMZWWKC>N=ZZWH+&"I2\BG#*W\O?S-_-MW\[?M]^QW@K*W\O?S`IH86YK86MU(,K?R]_,I`K*W\O?S-VA"I2\BG""S(SC!"@!"eofeof$example{'x0201.euc'} = unpack('u',<<'eofeof');MP;2ST:6KI:VEKZ6QI;.EK*6NI;"ELJ6T"L&TL=&CP:/"H\.CQ*/%H\:CQZ/AMH^*CXZ/DH^6CYJ/G"L&TM:VYYJ&JH?>A]*'PH?.AL*'UH?:ARJ'+H=VAW*'AMH<ZASZ'0H=&A[PK(OK/1CK:.MXZX/8ZYCKJ.MH[>CK>.WHZXCMZ.N8[>CKJ.MWJ3("LB^L]&.RH[?CLN.WX[,CM^.S8[?CLZ.WXZWCM^.L8[>"H[*CM^.RX[?MCLP*:&%N:V%K=2".RH[?CLN.WX[,CJ0*CLJ.WX[+CM^.S([=CJ$*R+ZST:3.#N.4*eofeof$example{'x0201.jis'} = unpack('u',<<'eofeof');M&R1"030S424K)2TE+R4Q)3,E+"4N)3`E,B4T&RA""ALD0D$T,5$C02-"(T,CM1"-%(T8C1R-A(V(C8R-D(V4C9B-G&RA""ALD0D$T-2TY9B$J(7<A="%P(7,AM,"%U(78A2B%+(5TA7"%A(4XA3R%0(5$A;QLH0@H;)$)(/C-1&RA)-C<X&RA"M/1LH23DZ-EXW7CA>.5XZ7ALD0B1(&RA""ALD0D@^,U$;*$E*7TM?3%]-7TY?M-U\Q7ALH0@H;*$E*7TM?3!LH0@IH86YK86MU(!LH24I?2U],)!LH0@H;*$E*97TM?3%TA&RA""ALD0D@^,U$D3CAE&RA""@``eofeof$example{'x0201.sosi'} = unpack('u',<<'eofeof');M&R1"030S424K)2TE+R4Q)3,E+"4N)3`E,B4T&RA*"ALD0D$T,5$C02-"(T,CM1"-%(T8C1R-A(V(C8R-D(V4C9B-G&RA*"ALD0D$T-2TY9B$J(7<A="%P(7,AM,"%U(78A2B%+(5TA7"%A(4XA3R%0(5$A;QLH2@H;)$)(/C-1&RA*#C8W.`\;M*$H]#CDZ-EXW7CA>.5XZ7@\;)$(D2!LH2@H;)$)(/C-1&RA*#DI?2U],7TU?M3E\W7S%>#PH.2E]+7TP/&RA*"FAA;FMA:W4@#DI?2U],)`\;*$H*#DI?2U],672$/&RA*"ALD0D@^,U$D3CAE&RA""@``eofeof$example{'x0201.x0208'} = unpack('u',<<'eofeof');M&R1"030S424K)2TE+R4Q)3,E+"4N)3`E,B4T&RA""ALD0D$T,5$;*$)!0D-$M149'86)C9&5F9PH;)$)!-#4M.68;*$(A0",D)5XF*B@I+2L]6UU[?1LD0B%OM&RA""ALD0D@^,U$E*R4M)2\;*$(]&R1")3$E,R4L)2XE,"4R)30D2!LH0@H;M)$)(/C-1)5$E5"57)5HE724M(2PE(B$K&RA""ALD0B51)50E51LH0@IH86YKM86MU(!LD0B51)50E52$B&RA""ALD0B51)50E525S(2,;*$(*&R1"2#XS421.&.&4;*$(*eofeof# -X is necessary to allow X0201 in SJIS# -Z convert X0208 alphabet to ASCIIprint "X0201 conversion: SJIS "; &test("$nkf -XZ",$example{'x0201.sjis'},$example{'x0201.x0208'});print "X0201 conversion: JIS "; &test("$nkf -Z",$example{'x0201.jis'},$example{'x0201.x0208'});print "X0201 conversion:SI/SO "; &test("$nkf -Z",$example{'x0201.sosi'},$example{'x0201.x0208'});print "X0201 conversion: EUC "; &test("$nkf -Z",$example{'x0201.euc'},$example{'x0201.x0208'});# -x means X0201 outputprint "X0201 output: SJIS "; &test("$nkf -xs",$example{'x0201.euc'},$example{'x0201.sjis'});print "X0201 output: JIS "; &test("$nkf -xj",$example{'x0201.sjis'},$example{'x0201.jis'});print "X0201 output: EUC "; &test("$nkf -xe",$example{'x0201.jis'},$example{'x0201.euc'});# MIME decodeprint "\nMIME test\n\n";# MIME ISO-2022-JP$example{'mime.iso2022'} = unpack('u',<<'eofeof');M/3])4T\M,C`R,BU*4#]"/T=Y4D%.144W96E23TI566Q/4U9)1WEH2S\]"CT_M:7-O+3(P,C(M2E`_0C]'>5)!3D5%-V5I4D]*55EL3U-624=Y:$L_/0H]/VESM;RTR,#(R+4I0/U$_/3%")$(D1B11/3%"*$)?96YD/ST*&R1`)#TD)B0K)$H;M*$H@/3])4T\M,C`R,BU*4#]"/T=Y4D%.144W96E23U!Y:S=D:'-O4V<]/3\]M(&5N9"!O9B!L:6YE"CT_25-/+3(P,C(M2E`_0C]'>5)!3D5%-V5I4D]0>6LWM9&AS;U-G/3T_/2`]/TE33RTR,#(R+4I0/T(_1WE204Y%13=E:5)/4'EK-V1HM<V]39ST]/ST*0G)O:V5N(&-A<V4*/3])4T\M,C`R,BU*4#]"/T=Y4D%.144WM96E23U!Y:S=D"FAS;U-G/3T_/2`]/TE33RTR,`HR,BU*4#]"/T=Y4D%.144WM96E23U!Y:S=D:'-O4V<]/3\]"CT_25-/+3(P,C(M2E`_0C]'>5)!3D5%-V5I44D]*55EL3QM;2U-624=Y:$L_/0H_eofeof$example{'mime.ans.strict'} = unpack('u',<<'eofeof');M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11M&RA"(&5N9`H;)$(D/20F)"LD2ALH0B`;)$(T03MZ)$X_*3MV&RA"96YD(&]FM(&QI;F4*&R1"-$$[>B1./RD[=C1!.WHD3C\I.W8;*$(*0G)O:V5N(&-A<V4*M/3])4T\M,C`R,BU*4#]"/T=Y4D%.144W96E23U!Y:S=D"FAS;U-G/3T_/2`]M/TE33RTR,`HR,BU*4#]"/T=Y4D%.144W96E23U!Y:S=D:'-O4V<]/3\]"CT_L25-/+3(P,C(M2E`_0C]'>5)!3D5%-V5I4D]*55EL3QM;2U-624=Y:$L_/0H_eofeof$example{'mime.unbuf.strict'} = unpack('u',<<'eofeof');M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11M&RA"(&5N9`H;)$(D/20F)"LD2ALH0B`;)$(T03MZ)$X_*3MV&RA"96YD(&]FM(&QI;F4*&R1"-$$[>B1./RD[=C1!.WHD3C\I.W8;*$(*0G)O:V5N(&-A<V4*M&R1"-$$[>B1./RD;*$)H<V]39ST]/ST@/3])4T\M,C`*,C(M2E`_0C]'>5)!M3D5%-V5I4D]0>6LW9&AS;U-G/3T_/0H;)$(T03MZ)$XE1ALH0EM+4U9)1WEH$2S\]"F5Ieofeof$example{'mime.ans'} = unpack('u',<<'eofeof');M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11M&RA"(&5N9`H;)$(D/20F)"LD2ALH0B`;)$(T03MZ)$X_*3MV&RA"96YD(&]FM(&QI;F4*&R1"-$$[>B1./RD[=C1!.WHD3C\I.W8;*$(*0G)O:V5N(&-A<V4*M&R1"-$$[>B1./RD;*$)H<V]39ST]/ST@&R1"-$$[>B1./RD[=ALH0@H;)$(T603MZ)$XE1ALH0EM+4U9)1WEH2S\]"@`*eofeof$example{'mime.unbuf'} = unpack('u',<<'eofeof');M&R1"-$$[>B1.)48E.25(&RA""ALD0C1!.WHD3B5&)3DE2!LH0@H;)$(D1B11M&RA"(&5N9`H;)$(D/20F)"LD2ALH0B`;)$(T03MZ)$X_*3MV&RA"96YD(&]FM(&QI;F4*&R1"-$$[>B1./RD[=C1!.WHD3C\I.W8;*$(*0G)O:V5N(&-A<V4*M&R1"-$$[>B1./RD;*$)H<V]39ST]/ST@&R1"-$$[>B1./RD[=ALH0@H;)$(T603MZ)$XE1ALH0EM+4U9)1WEH2S\]"@`*eofeof$example{'mime.base64'} = unpack('u',<<'eofeof');M9W-M5"])3&YG<FU#>$I+-&=Q=4,S24LS9W%Q0E%:3TUI-39,,S0Q-&=S5T)1M43!+9VUA1%9O3T@*9S)+1%1O3'=K8C)1;$E+;V=Q2T-X24MG9W5M0W%*3EEG<<T=#>$E+9V=U;4,X64Q&9W)70S592VMG<6U""F=Qeofeof$example{'mime.base64.ans'} = unpack('u',<<'eofeof');M&R1")$M&?B1I)#LD1D0Z)"TD7B0Y)"PA(D5L-7XV83E9)$<A(ALH0@T*&R1"M(T<E-R5G)4,E+R1R0C\_="0J)"0D1B0B)&LD*D4Y)$,D1B0B)&LD<R1')#<D(9R0F)"L;*$(Eeofeofprint "Next test is expeced to Fail.\n";print "MIME decode (strict) "; $tmp = &test("$nkf -m",$example{'mime.iso2022'},$example{'mime.ans.strict'});print "MIME decode (nonstrict)"; $tmp = &test("$nkf -m",$example{'mime.iso2022'},$example{'mime.ans'});# open(OUT,">tmp1");print OUT pack('u',$tmp);close(OUT);# unbuf mode implies more pessimistic decodeprint "MIME decode (unbuf) "; &test("$nkf -mu",$example{'mime.iso2022'},$example{'mime.unbuf'});print "MIME decode (base64) "; &test("$nkf -mB",$example{'mime.base64'},$example{'mime.base64.ans'});# MIME ISO-8859-1$example{'mime.is8859'} = unpack('u',<<'eofeof');M/3])4T\M.#@U.2TQ/U$_*CU#-V%V83\_/2`*4&5E<B!4]G)N9W)E;@I,87-SM92!(:6QL97+X92!0971E<G-E;B`@7"`B36EN(&MA97!H97-T(&AA<B!F86%EM="!E="!F;V5L(2(*06%R:'5S(%5N:79E<G-I='DL($1%3DU!4DL@(%P@(DUI<;B!KYG!H97-T(&AA<B!FY65T(&5T(&;X;"$B"@!Keofeof$example{'mime.is8859.ans'} = unpack('u',<<'eofeof');M*L=A=F$_(`I0965R(%3V<FYG<F5N"DQA<W-E($AI;&QE<OAE(%!E=&5R<V5NM("!<(")-:6X@:V%E<&AE<W0@:&%R(&9A865T(&5T(&9O96PA(@I!87)H=7,@M56YI=F5R<VET>2P@1$5.34%22R`@7"`B36EN(&OF<&AE<W0@:&%R(&;E970@)970@9OAL(2(*eofeof# Without -l, ISO-8859-1 was handled as X0201.print "MIME ISO-8859-1 (Q) "; &test("$nkf -ml",$example{'mime.is8859'},$example{'mime.is8859.ans'});# test for -f is not so simple.# end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -