diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2002-02-19 03:49:34 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2002-02-19 03:49:34 +0000 |
commit | e49298ea32513e37f1e773b8b86f6ee02bf9d1ac (patch) | |
tree | 16340ff4890a46f9f96c1658fcfb444ac12046c9 | |
parent | 5cb851a619abc5c8836307a3be2292a0ed632588 (diff) | |
download | perl-e49298ea32513e37f1e773b8b86f6ee02bf9d1ac.tar.gz |
Add back the new casing tests.
p4raw-id: //depot/perl@14761
-rw-r--r-- | MANIFEST | 4 | ||||
-rw-r--r-- | t/uni/case.pl | 80 | ||||
-rw-r--r-- | t/uni/lower.t | 8 | ||||
-rw-r--r-- | t/uni/title.t | 8 | ||||
-rw-r--r-- | t/uni/upper.t | 8 |
5 files changed, 108 insertions, 0 deletions
@@ -2409,8 +2409,12 @@ t/run/switchx.t Test the -x switch t/TEST The regression tester t/test.pl Simple testing library t/TestInit.pm Preamble library for core tests +t/uni/case.pl See if Unicode casing works t/uni/fold.t See if Unicode folding works +t/uni/lower.t See if Unicode casing works t/uni/sprintf.t See if Unicode sprintf works +t/uni/title.t See if Unicode casing works +t/uni/upper.t See if Unicode casing works taint.c Tainting code thrdvar.h Per-thread variables thread.h Threading header diff --git a/t/uni/case.pl b/t/uni/case.pl new file mode 100644 index 0000000000..f5c4f7888a --- /dev/null +++ b/t/uni/case.pl @@ -0,0 +1,80 @@ +use File::Spec; + +require "test.pl"; + +sub casetest { + my ($base, $spec, $func) = @_; + my $file = File::Spec->catfile(File::Spec->catdir(File::Spec->updir, + "lib", "unicore", "To"), + "$base.pl"); + my $simple = do $file; + my %simple; + for my $i (split(/\n/, $simple)) { + my ($k, $v) = split(' ', $i); + $simple{$k} = $v; + } + my %seen; + + for my $i (sort keys %simple) { + $seen{hex $i}++; + } + print "# ", scalar keys %simple, " simple mappings\n"; + + my $both; + + for my $i (sort keys %$spec) { + if (++$seen{hex $i} == 2) { + warn "$base: $i seen twice\n"; + $both++; + } + } + print "# ", scalar keys %$spec, " special mappings\n"; + + exit(1) if $both; + + my %none; + for my $i (map { ord } split //, + "\e !\"#\$%&'()+,-./0123456789:;<=>?\@[\\]^_{|}~\b") { + next if pack("U0U", $i) =~ /\w/; + $none{$i}++ unless $seen{$i}; + } + print "# ", scalar keys %none, " noncase mappings\n"; + + my $tests = + (scalar keys %simple) + + (scalar keys %$spec) + + (scalar keys %none); + print "1..$tests\n"; + + my $test = 1; + + for my $i (sort { hex $a <=> hex $b } keys %simple) { + my $w = "$i -> $simple{$i}"; + my $c = pack "U0U", hex $i; + my $d = $func->($c); + print $d eq pack("U0U", hex $simple{$i}) ? + "ok $test # $w\n" : "not ok $test # $w\n"; + $test++; + } + + for my $i (sort { hex $a <=> hex $b } keys %$spec) { + my $w = qq[$i -> "] . display($spec->{$i}) . qq["]; + my $c = pack "U0U", hex $i; + my $d = $func->($c); + print $d eq $spec->{$i} ? + "ok $test # $w\n" : "not ok $test # $w\n"; + $test++; + } + + + for my $i (sort { $a <=> $b } keys %none) { + my $w = sprintf "%04X -> %04X", $i, $i; + my $c = pack "U0U", $i; + my $d = $func->($c); + print $d eq $c ? + "ok $test # $w\n" : "not ok $test # $w\n"; + $test++; + } +} + +1; diff --git a/t/uni/lower.t b/t/uni/lower.t new file mode 100644 index 0000000000..4420d0b165 --- /dev/null +++ b/t/uni/lower.t @@ -0,0 +1,8 @@ +BEGIN { + chdir 't' if -d 't'; + @INC = qw(../lib uni .); + require "case.pl"; +} + +casetest("Lower", \%utf8::ToSpecLower, sub { lc $_[0] }); + diff --git a/t/uni/title.t b/t/uni/title.t new file mode 100644 index 0000000000..c0b7e3a016 --- /dev/null +++ b/t/uni/title.t @@ -0,0 +1,8 @@ +BEGIN { + chdir 't' if -d 't'; + @INC = qw(../lib uni .); + require "case.pl"; +} + +casetest("Title", \%utf8::ToSpecTitle, sub { ucfirst $_[0] }); + diff --git a/t/uni/upper.t b/t/uni/upper.t new file mode 100644 index 0000000000..5694c26f22 --- /dev/null +++ b/t/uni/upper.t @@ -0,0 +1,8 @@ +BEGIN { + chdir 't' if -d 't'; + @INC = qw(../lib uni .); + require "case.pl"; +} + +casetest("Upper", \%utf8::ToSpecUpper, sub { uc $_[0] }); + |