t/uni/case.pl: allow extra tests of different form
Karl Williamson [Wed, 2 Jun 2010 21:04:16 +0000 (15:04 -0600)]
Add an option to case.pl so that the callers can run extra tests that
don't fit in with it's format.  They just pass the number run to it, and
it adjusts the plan accordingly.

t/uni/case.pl
t/uni/lower.t
t/uni/title.t
t/uni/upper.t

index c42887f..fcb43de 100644 (file)
@@ -7,9 +7,11 @@ sub unidump {
 }
 
 sub casetest {
-    my ($base, $spec, @funcs) = @_;
+    my ($already_run, $base, $spec, @funcs) = @_;
     # For each provided function run it, and run a version with some extra
     # characters afterwards. Use a recycling symbol, as it doesn't change case.
+    # $already_run is the number of extra tests the caller has run before this
+    # call.
     my $ballast = chr (0x2672) x 3;
     @funcs = map {my $f = $_;
                  ($f,
@@ -57,12 +59,12 @@ sub casetest {
     print "# ", scalar keys %none, " noncase mappings\n";
 
     my $tests = 
+        $already_run +
        ((scalar keys %simple) +
         (scalar keys %$spec) +
         (scalar keys %none)) * @funcs;
-    print "1..$tests\n";
 
-    my $test = 1;
+    my $test = $already_run + 1;
 
     for my $i (sort keys %simple) {
        my $w = $simple{$i};
@@ -152,6 +154,8 @@ sub casetest {
                $test++;
        }
     }
+
+    print "1..$tests\n";
 }
 
 1;
index 76df6de..5ab4cdd 100644 (file)
@@ -4,6 +4,7 @@ BEGIN {
     require "case.pl";
 }
 
-casetest("Lower", \%utf8::ToSpecLower,
+casetest(0, # No extra tests run here,
+       "Lower", \%utf8::ToSpecLower,
         sub { lc $_[0] }, sub { my $a = ""; lc ($_[0] . $a) },
         sub { lcfirst $_[0] }, sub { my $a = ""; lcfirst ($_[0] . $a) });
index ae85f94..3d2eb3e 100644 (file)
@@ -4,5 +4,6 @@ BEGIN {
     require "case.pl";
 }
 
-casetest("Title", \%utf8::ToSpecTitle, sub { ucfirst $_[0] },
+casetest(0, # No extra tests run here,
+       "Title", \%utf8::ToSpecTitle, sub { ucfirst $_[0] },
         sub { my $a = ""; ucfirst ($_[0] . $a) });
index d9f1788..4229cfe 100644 (file)
@@ -4,5 +4,7 @@ BEGIN {
     require "case.pl";
 }
 
-casetest("Upper", \%utf8::ToSpecUpper, sub { uc $_[0] },
+casetest( 0,   # extra tests already run
+       "Upper", \%utf8::ToSpecUpper,
+        sub { uc $_[0] },
         sub { my $a = ""; uc ($_[0] . $a) });