|
Packit |
d0f5c2 |
#!/usr/local/bin/perl
|
|
Packit |
d0f5c2 |
#
|
|
Packit |
d0f5c2 |
# $Id: rt.pl,v 2.1 2006/05/03 18:24:10 dankogai Exp $
|
|
Packit |
d0f5c2 |
#
|
|
Packit |
d0f5c2 |
|
|
Packit |
d0f5c2 |
BEGIN {
|
|
Packit |
d0f5c2 |
my $ucmdir = "ucm";
|
|
Packit |
d0f5c2 |
if ($ENV{'PERL_CORE'}){
|
|
Packit |
d0f5c2 |
chdir 't';
|
|
Packit |
d0f5c2 |
unshift @INC, '../lib';
|
|
Packit |
d0f5c2 |
$ucmdir = "../ext/Encode/ucm";
|
|
Packit |
d0f5c2 |
}
|
|
Packit |
d0f5c2 |
require Config; import Config;
|
|
Packit |
d0f5c2 |
if ($Config{'extensions'} !~ /\bEncode\b/) {
|
|
Packit |
d0f5c2 |
print "1..0 # Skip: Encode was not built\n";
|
|
Packit |
d0f5c2 |
exit 0;
|
|
Packit |
d0f5c2 |
}
|
|
Packit |
d0f5c2 |
if (ord("A") == 193) {
|
|
Packit |
d0f5c2 |
print "1..0 # Skip: EBCDIC\n";
|
|
Packit |
d0f5c2 |
exit 0;
|
|
Packit |
d0f5c2 |
}
|
|
Packit |
d0f5c2 |
use strict;
|
|
Packit |
d0f5c2 |
require Test::More;
|
|
Packit |
d0f5c2 |
our $DEBUG;
|
|
Packit |
d0f5c2 |
our @ucm;
|
|
Packit |
d0f5c2 |
unless(@ARGV){
|
|
Packit |
d0f5c2 |
use File::Spec;
|
|
Packit |
d0f5c2 |
Test::More->import(tests => 103);
|
|
Packit |
d0f5c2 |
opendir my $dh, $ucmdir or die "$ucmdir:$!";
|
|
Packit |
d0f5c2 |
@ucm =
|
|
Packit |
d0f5c2 |
map {File::Spec->catfile($ucmdir, $_) }
|
|
Packit |
d0f5c2 |
sort grep {/\.ucm$/o} readdir($dh);
|
|
Packit |
d0f5c2 |
closedir $dh;
|
|
Packit |
d0f5c2 |
}else{
|
|
Packit |
d0f5c2 |
Test::More->import("no_plan");
|
|
Packit |
d0f5c2 |
$DEBUG = 1;
|
|
Packit |
d0f5c2 |
@ucm = @ARGV;
|
|
Packit |
d0f5c2 |
}
|
|
Packit |
d0f5c2 |
}
|
|
Packit |
d0f5c2 |
|
|
Packit |
d0f5c2 |
use strict;
|
|
Packit |
d0f5c2 |
use Encode qw/encode decode/;
|
|
Packit |
d0f5c2 |
our $DEBUG;
|
|
Packit |
d0f5c2 |
our @ucm;
|
|
Packit |
d0f5c2 |
|
|
Packit |
d0f5c2 |
for my $ucm (@ucm){
|
|
Packit |
d0f5c2 |
my ($name, $nchar, $nrt, $nok) = rttest($ucm);
|
|
Packit |
d0f5c2 |
$nok += 0;
|
|
Packit |
d0f5c2 |
ok($nok == 0, "$ucm => $name ($nchar, $nrt, $nok)");
|
|
Packit |
d0f5c2 |
}
|
|
Packit |
d0f5c2 |
|
|
Packit |
d0f5c2 |
sub rttest{
|
|
Packit |
d0f5c2 |
my $ucm = shift;
|
|
Packit |
d0f5c2 |
my ($name, $nchar, $nrt, $nok);
|
|
Packit |
d0f5c2 |
open my $rfh, "<$ucm" or die "$ucm:$!";
|
|
Packit |
d0f5c2 |
# <U0000> \x00 |0 # <control>
|
|
Packit |
d0f5c2 |
while(<$rfh>){
|
|
Packit |
d0f5c2 |
s/#.*//o; /^$/ and next;
|
|
Packit |
d0f5c2 |
unless ($name){
|
|
Packit |
d0f5c2 |
/^<code_set_name>\s+"([^\"]+)"/io or next;
|
|
Packit |
d0f5c2 |
$name = $1 and next;
|
|
Packit |
d0f5c2 |
}else{
|
|
Packit |
d0f5c2 |
/^<U([0-9a-f]+)>\s+(\S+)\s+\|(\d)/io or next;
|
|
Packit |
d0f5c2 |
$nchar++;
|
|
Packit |
d0f5c2 |
$3 == 0 or next;
|
|
Packit |
d0f5c2 |
$nrt++;
|
|
Packit |
d0f5c2 |
my $uni = chr(hex($1));
|
|
Packit |
d0f5c2 |
my $enc = eval qq{ "$2" };
|
|
Packit |
d0f5c2 |
decode($name, $enc) eq $uni or $nok++;
|
|
Packit |
d0f5c2 |
encode($name, $uni) eq $enc or $nok++;
|
|
Packit |
d0f5c2 |
}
|
|
Packit |
d0f5c2 |
}
|
|
Packit |
d0f5c2 |
return($name, $nchar, $nrt, $nok);
|
|
Packit |
d0f5c2 |
}
|
|
Packit |
d0f5c2 |
__END__
|