summaryrefslogtreecommitdiff
path: root/t/re/reg_fold.t
diff options
context:
space:
mode:
Diffstat (limited to 't/re/reg_fold.t')
-rw-r--r--t/re/reg_fold.t42
1 files changed, 42 insertions, 0 deletions
diff --git a/t/re/reg_fold.t b/t/re/reg_fold.t
new file mode 100644
index 0000000000..25144521a5
--- /dev/null
+++ b/t/re/reg_fold.t
@@ -0,0 +1,42 @@
+#!perl
+
+BEGIN {
+ chdir 't' if -d 't';
+ @INC = '../lib';
+ require './test.pl';
+}
+
+use strict;
+use warnings;
+my $count=1;
+my @tests;
+
+my $file="../lib/unicore/CaseFolding.txt";
+open my $fh,"<",$file or die "Failed to read '$file': $!";
+while (<$fh>) {
+ chomp;
+ my ($line,$comment)= split/\s+#\s+/, $_;
+ my ($cp,$type,@fc)=split/[\s;]+/,$line||'';
+ next unless $type and ($type eq 'F' or $type eq 'C');
+ $_="\\x{$_}" for @fc;
+ my $cpv=hex("0x$cp");
+ my $chr="chr(0x$cp)";
+ my @str;
+ push @str,$chr if $cpv<128 or $cpv>256;
+ if ($cpv<256) {
+ push @str,"do{my \$c=$chr; utf8::upgrade(\$c); \$c}"
+ }
+
+ foreach my $str ( @str ) {
+ my $expr="$str=~/@fc/ix";
+ my $t=($cpv > 256 || $str=~/^do/) ? "unicode" : "latin";
+ push @tests,
+ qq[ok($expr,'$chr=~/@fc/ix - $comment ($t string)')];
+ $tests[-1]="TODO: { local \$::TODO='[13:41] <BinGOs> cue *It is all Greek to me* joke.';\n$tests[-1] }"
+ if $cp eq '0390' or $cp eq '03B0';
+ $count++;
+ }
+}
+eval join ";\n","plan tests=>".($count-1),@tests,"1"
+ or die $@;
+__DATA__