#!/usr/bin/perl # # kakasi test program for kakasi v2.2.5 (Perl module v0.1) # Ken-ichi Hirose # $kakasi = "kakasi"; $process_all = 0; $process_all = 1 if ($ARGV[0] eq "-d"); sub use_test { BEGIN { $| = 1; print "\nPackage test\n"; } END {print " use => Fail\n" unless $loaded;} use Text::Kakasi; $loaded = 1; print " use => Complite\n"; ######################### End of black magic. if ( Text::Kakasi::getopt_argv('kakasi','-w') == 0 ) { if ( Text::Kakasi::do_kakasi("1") != NULL ) { if ( Text::Kakasi::close_kanwadict() == 0 ) { print " getopt_argv => Complite\n"; print " do_kakasi => Complite\n"; print " close_kanwadict => Complite\n"; } else { print " getopt_argv => Complite\n"; print " do_kakasi => Complite\n"; print " close_kanwadict => ng\n"; } } else { print " getopt_argv => Complite\n"; print " do_kakasi => Fail\n"; print " close_kanwadict => Fail\n"; Text::Kakasi::close_kanwadict(); } } else { print " getopt_argv => Fail\n"; print " do_kakasi => Fail\n"; print " close_kanwadict => Fail\n"; Text::Kakasi::close_kanwadict(); } } &use_test(); sub command_test { my ($argv,$in,$exp,$process) = @_; my ($result); my (@argv) = split(' ',$argv); open(OUT,"> kakasi.in"); print OUT $in; close(OUT); system("$kakasi @argv kakasi.out"); # easy $result = ''; open(IN,"< kakasi.out"); while() { $result .= $_; } close(IN); print (($result eq $exp)?"Complite":"Fail"); print "(",length($result),"byte)"; print STDERR "\n%$kakasi @argv kakasi.out\n" if ($process || $process_all); print STDERR "INPUT=<<__command_test__\n",$in,"__command_test__\n" if ($process || $process_all); print STDERR "\nEXPECT=<<__command_test__\n",$exp,"__command_test__\n" if ($process || $process_all); print STDERR "\nRESULT=<<__command_test__\n",$result,"__command_test__\n\n" if ($process || $process_all); unlink("./kakasi.in"); unlink("./kakasi.out"); return $result; } sub module_test { use Text::Kakasi; my ($argv,$in,$exp,$process) = @_; my ($result); my (@argv) = split(' ',$argv); Text::Kakasi::getopt_argv("kakasi",@argv); $result = Text::Kakasi::do_kakasi("$in"); Text::Kakasi::close_kanwadict(); #print "exp:\n$exp\nresult:\n$result\n"; print (($result eq $exp)?"Complite":"Fail"); print "(",length($result),"byte)"; print STDERR "\ngetopt_argv(\"kakasi\",@argv)\;\n" if ($process || $process_all); print STDERR "INPUT=<<__module_test__\n",$in,"_module_test__\n" if ($process || $process_all); print STDERR "\nEXPECT=<<__module_test__\n",$exp,"_module_test__\n" if ($process || $process_all); print STDERR "\nRESULT=<<__module_test__\n",$result,"_module_test__\n\n" if ($process || $process_all); return $result; } sub cross_check { my ($argv,$in,$exp,$process) = @_; my ($result1,$result2); my (@argv) = split $argv; open(OUT,"> kakasi.in"); print OUT $in; close(OUT); system("$kakasi @argv kakasi.out"); # easy $result1 = ''; open(IN,"< kakasi.out"); while() { $result1 .= $_; } close(IN); Text::Kakasi::getopt_argv("kakasi",@argv); $result2 = Text::Kakasi::do_kakasi("$in"); Text::Kakasi::close_kanwadict(); print (($result1 eq $result2)?"Complite":"Fail"); print "(",length($result1),"byte,",length($result2),"byte)"; print STDERR "RESULT=<<__command_test__\n",$result1,"\n__command_test__\n" if ($process || $process_all); print STDERR "\nRESULT=<<__module_test__\n",$result2,"\n__module_test__\n\n" if ($process || $process_all); unlink("./kakasi.in"); unlink("./kakasi.out"); return $result1; } sub test { print "module => "; &module_test(@_); #&command_test(@_); print "\n"; } ### Basic Conversion $sample{'euc'} = unpack('u',<<'eofeof'); MI+.DSJ2_I-.DSZ'6:V%K87-I9F]R5VEN,S*AUZ3RI<"EIJ7SI>VAO*7)I+>D MQL2ZI*VDHJ3JI*RDR*2FI+2DMJ2DI-ZDN:&C"J2SI.RDSVMA:V%S:78R+C(N M-2ND[Z2KI,&]\:2MI/)C>6=W:6XL;6EN9WNTQ+:MI,[,M:2DROVDRZ3B MN\BDPZ3&Q+JDL:3KI.BDIE=I;F1O=W.DS@J\PKG4M\&\L*3+I+>DQJ3>I,BD MX:2_RJJDQZ2YH:,*NL>_M\C'I,^PRK*\I,Y796)086=E"CQ54DPZ:'1T<#HO M+W=W=RYT86UA+F]R+FIP+R4W16ME;GIO+2].86UA>G4O/@JDQ[CXLZNDMZ3& MI*2DWJ2YH:.ARKZPH:*DLZ3.I=JAO*6XI,_)K,W7I,NQ_J2XI,:YN;^WI+6D *[*3>I+FAHZ'+"@`` eofeof $sample{'sjis'} = unpack('u',<<'eofeof'); M@K&"S(*]@M&"S8%U:V%K87-I9F]R5VEN,S*!=H+P@U^#18.3@XV!6X-H@K6" MQ)*X@JN"H(+H@JJ"QH*D@K*"M(*B@MR"MX%""H*Q@NJ"S6MA:V%S:78R+C(N M-2N"[8*I@K^/D8*K@O!C>6=W:6XL;6EN9W"P8+$DKB"KX+I@N:"I%=I;F1O=W."S`J.P(USC&".KH+)@K6"Q(+<@L:" MWX*]E:B"Q8*W@4(*C<605I3%@LV(R(FZ@LQ796)086=E"CQ54DPZ:'1T<#HO M+W=W=RYT86UA+F]R+FIP+R4W16ME;GIO+2].86UA>G4O/@J"Q8SVBDJ"M8+$ M@J*"W(*W@4*!:8^N@4&"L8+,@WF!6X-7@LV52Y=V@LF)GH*V@L2-6)!6@K." *ZH+<@K>!0H%J"@`` eofeof $sample{'jis'} = unpack('u',<<'eofeof'); M&R1")#,D3B0_)%,D3R%6&RA":V%K87-I9F]R5VEN,S(;)$(A5R1R)4`E)B5S M)6TA/"5))#6=W:6XL M;6EN9W)$@D820_2BHD1R0Y(2,;*$(*&R1".D<_-TA')$\P2C(\)$X;*$)796)0 M86=E"CQ54DPZ:'1T<#HO+W=W=RYT86UA+F]R+FIP+R4W16ME;GIO+2].86UA M>G4O/@H;)$(D1SAX,RLD-R1&)"0D7B0Y(2,A2CXP(2(D,R1.)5HA/"4X)$]) ?+$U7)$LQ?B0X)$8Y.3\W)#4D;"1>)#DA(R%+&RA""@`` eofeof print "\nBasic Conversion test\n"; print "EUC to SJIS... ";&test("-ieuc -osjis",$sample{'euc'},$sample{'sjis'}); print "SJIS to SJIS... ";&test("-isjis -osjis" ,$sample{'sjis'},$sample{'sjis'}); print "JIS to SJIS... ";&test("-inewjis -osjis" ,$sample{'jis'},$sample{'sjis'}); print "EUC to JIS ... ";&test("-ieuc -onewjis",$sample{'euc'},$sample{'jis'}); print "SJIS to JIS ... ";&test("-isjis -onewjis",$sample{'sjis'},$sample{'jis'}); print "JIS to JIS ... ";&test("-inewjis -onewjis",$sample{'jis'},$sample{'jis'}); print "EUC to EUC ... ";&test("-ieuc -oeuc",$sample{'euc'},$sample{'euc'}); print "SJIS to EUC ... ";&test("-isjis -oeuc" ,$sample{'sjis'},$sample{'euc'}); print "JIS to EUC ... ";&test("-inewjis -oeuc" ,$sample{'jis'},$sample{'euc'}); $wakachi{'euc'} = unpack('u',<<'eofeof'); MI+.DSJ2_I-.DSR"AUB!K86MADQB#$NJ2M(*2BI.JDK*3(I*:DM*2VI*2DWJ2Y(*&C"J2SI.RDSR!K M86MAL@I,>DK:3K"J3HI*:DRZ2WI+\@<&%T8V@@I/(@I;.E\Z71 MI:2EZR"TQ+:M(*3.(,RUI*0@ROT@I,NDXB"[R*3#I,8@Q+JDL2"DZZ3HI*8@ M5VEN9&]W)#D; .*$(@&R1"(2,A2QLH0@H` eofeof print "\nWakachigaki Conversion test\n"; print "EUC to SJIS... ";&test("-w -ieuc -osjis",$sample{'euc'},$wakachi{'sjis'}); print "SJIS to SJIS... ";&test("-w -isjis -osjis" ,$sample{'sjis'},$wakachi{'sjis'}); print "JIS to SJIS... ";&test("-w -inewjis -osjis" ,$sample{'jis'},$wakachi{'sjis'}); print "EUC to JIS ... ";&test("-w -ieuc -onewjis",$sample{'euc'},$wakachi{'jis'}); print "SJIS to JIS ... ";&test("-w -isjis -onewjis",$sample{'sjis'},$wakachi{'jis'}); print "JIS to JIS ... ";&test("-w -inewjis -onewjis",$sample{'jis'},$wakachi{'jis'}); print "EUC to EUC ... ";&test("-w -ieuc -oeuc",$sample{'euc'},$wakachi{'euc'}); print "SJIS to EUC ... ";&test("-w -isjis -oeuc" ,$sample{'sjis'},$wakachi{'euc'}); print "JIS to EUC ... ";&test("-w -inewjis -oeuc" ,$sample{'jis'},$wakachi{'euc'}); $yomikata{'euc'} = unpack('u',<<'eofeof'); MI+.DSJ2_I-.DSR"AUB!K86MADQB#$NJ2M6Z2DI+^DP*2M72"DHJ3JI*RDR*2FI+2DMJ2DI-ZDN2"A MHPJDLZ3LI,\@:V%K87-I=C(N,BXU*R"D[Z2KI,$@O?&DK5NDJZ2M72"D\B!C M>6=W:6XL;6EN9WL@M,2VK5NDJZ3SI*VDYZ2F72"DSB#,M:2D M6Z3*I*1=(,K]6WNDVZ2F?*2KI+]\I*RDOWRDW:2F?5T@I,NDXB"[R*3#I,9; MI,2DJZ3#I,9=(,2ZI+%;I*2DOZ3`I+%=(*3KI.BDIB!7:6YD;W=S(*3."KS" MN=2WP;RP6Z2XI,.DLZ2FI+&DI*2WI*U=(*3+I+>DQJ3>I,BDX:2_(,JJ6WND MXJ3.?*36I,1\I.*DQ'U=(*3'I+D@H:,*NL>_M\C'6Z2UI*2DMZ3SI-"D\UT@ MI,\@L,JRO*3.6Z2DI*NDSET@5V5B4&%G90H\55),.FAT='`Z+R]W=WDQJ2DI-ZDN2"AHZ'*(+ZP6WNDOZ2KI+=\I+>DYZ2F?*3*I*I\I-*DM7RD MTJ2UI+=\I+^DJWRDRJ3;?5T@H:(@I+.DSB"EVJ&\I;@@I,\@R:S-UUNDTJ3$ MI.BDIET@I,L@L?ZDN%M[I*JDIJ2X?*2JI*JDN'U=(*3&(+FYO[=;I+.DIJ2W 2I/-=(*2UI.RDWJ2Y(*&CH6=W:6XL;6EN9W6=W:6XL;6EN9W)$@D820_&RA"(!LD0DHJ&RA"6WL;)$(D8B1.&RA"?!LD0B16)$0; M*$)\&R1")&(D1!LH0GU=(!LD0B1')#D;*$(@&R1"(2,;*$(*&R1".D<_-TA' M&RA"6QLD0B0U)"0D-R1S)%`DVAO*7)I+>D # MQL2ZI*VDHJ3JI*RDR*2FI+2DMJ2DI-ZDN:&C"J2SI.RDSVMA:V%S:78R+C(N # M-2ND[Z2KI,&]\:2MI/)C>6=W:6XL;6EN9WNTQ+:MI,[,M:2DROVDRZ3B # MN\BDPZ3&Q+JDL:3KI.BDIE=I;F1O=W.DS@J\PKG4M\&\L*3+I+>DQJ3>I,BD # MX:2_RJJDQZ2YH:,*NL>_M\C'I,^PRK*\I,Y796)086=E"CQ54DPZ:'1T<#HO # M+W=W=RYT86UA+F]R+FIP+R4W16ME;GIO+2].86UA>G4O/@JDQ[CXLZNDMZ3& # MI*2DWJ2YH:.ARKZPH:*DLZ3.I=JAO*6XI,_)K,W7I,NQ_J2XI,:YN;^WI+6D # *[*3>I+FAHZ'+"@`` # ` # end #############################################################