This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
APItest/t/handy.t: Add more tests
authorKarl Williamson <khw@cpan.org>
Sun, 18 Dec 2016 18:55:49 +0000 (11:55 -0700)
committerKarl Williamson <khw@cpan.org>
Fri, 23 Dec 2016 18:41:32 +0000 (11:41 -0700)
The macros like isALPHA() were not getting tested; instead the theory
being that testing isALPHA_A() was good enough because they are #defined
to be the same.  But that might change and the tests wouldn't uncover
that.  And it turned out that some things wern't getting tested at all
if there was no _A version of the macro, for example isALNUM().  This
commit adds test for the version of the isFOO() macros with no suffix.

ext/XS-APItest/APItest.pm
ext/XS-APItest/APItest.xs
ext/XS-APItest/t/handy.t

index 473d4a3..1be0116 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use warnings;
 use Carp;
 
-our $VERSION = '0.87';
+our $VERSION = '0.88';
 
 require XSLoader;
 
index c58e248..3060f0f 100644 (file)
@@ -4379,6 +4379,13 @@ test_isBLANK_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isBLANK(UV ord)
+    CODE:
+        RETVAL = isBLANK(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isBLANK_A(UV ord)
     CODE:
         RETVAL = isBLANK_A(ord);
@@ -4442,6 +4449,13 @@ test_isUPPER_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isUPPER(UV ord)
+    CODE:
+        RETVAL = isUPPER(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isUPPER_A(UV ord)
     CODE:
         RETVAL = isUPPER_A(ord);
@@ -4491,6 +4505,13 @@ test_isLOWER_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isLOWER(UV ord)
+    CODE:
+        RETVAL = isLOWER(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isLOWER_A(UV ord)
     CODE:
         RETVAL = isLOWER_A(ord);
@@ -4540,6 +4561,13 @@ test_isALPHA_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isALPHA(UV ord)
+    CODE:
+        RETVAL = isALPHA(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isALPHA_A(UV ord)
     CODE:
         RETVAL = isALPHA_A(ord);
@@ -4589,6 +4617,13 @@ test_isWORDCHAR_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isWORDCHAR(UV ord)
+    CODE:
+        RETVAL = isWORDCHAR(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isWORDCHAR_A(UV ord)
     CODE:
         RETVAL = isWORDCHAR_A(ord);
@@ -4638,6 +4673,13 @@ test_isALPHANUMERIC_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isALPHANUMERIC(UV ord)
+    CODE:
+        RETVAL = isALPHANUMERIC(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isALPHANUMERIC_A(UV ord)
     CODE:
         RETVAL = isALPHANUMERIC_A(ord);
@@ -4673,6 +4715,13 @@ test_isALPHANUMERIC_LC_utf8(unsigned char * p)
         RETVAL
 
 bool
+test_isALNUM(UV ord)
+    CODE:
+        RETVAL = isALNUM(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isALNUM_uni(UV ord)
     CODE:
         RETVAL = isALNUM_uni(ord);
@@ -4736,6 +4785,13 @@ test_isDIGIT_LC_utf8(unsigned char * p)
         RETVAL
 
 bool
+test_isDIGIT(UV ord)
+    CODE:
+        RETVAL = isDIGIT(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isDIGIT_A(UV ord)
     CODE:
         RETVAL = isDIGIT_A(ord);
@@ -4757,6 +4813,13 @@ test_isDIGIT_LC(UV ord)
         RETVAL
 
 bool
+test_isOCTAL(UV ord)
+    CODE:
+        RETVAL = isOCTAL(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isOCTAL_A(UV ord)
     CODE:
         RETVAL = isOCTAL_A(ord);
@@ -4785,6 +4848,13 @@ test_isIDFIRST_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isIDFIRST(UV ord)
+    CODE:
+        RETVAL = isIDFIRST(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isIDFIRST_A(UV ord)
     CODE:
         RETVAL = isIDFIRST_A(ord);
@@ -4834,6 +4904,13 @@ test_isIDCONT_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isIDCONT(UV ord)
+    CODE:
+        RETVAL = isIDCONT(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isIDCONT_A(UV ord)
     CODE:
         RETVAL = isIDCONT_A(ord);
@@ -4883,6 +4960,13 @@ test_isSPACE_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isSPACE(UV ord)
+    CODE:
+        RETVAL = isSPACE(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isSPACE_A(UV ord)
     CODE:
         RETVAL = isSPACE_A(ord);
@@ -4932,6 +5016,13 @@ test_isASCII_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isASCII(UV ord)
+    CODE:
+        RETVAL = isASCII(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isASCII_A(UV ord)
     CODE:
         RETVAL = isASCII_A(ord);
@@ -4981,6 +5072,13 @@ test_isCNTRL_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isCNTRL(UV ord)
+    CODE:
+        RETVAL = isCNTRL(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isCNTRL_A(UV ord)
     CODE:
         RETVAL = isCNTRL_A(ord);
@@ -5030,6 +5128,13 @@ test_isPRINT_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isPRINT(UV ord)
+    CODE:
+        RETVAL = isPRINT(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isPRINT_A(UV ord)
     CODE:
         RETVAL = isPRINT_A(ord);
@@ -5079,6 +5184,13 @@ test_isGRAPH_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isGRAPH(UV ord)
+    CODE:
+        RETVAL = isGRAPH(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isGRAPH_A(UV ord)
     CODE:
         RETVAL = isGRAPH_A(ord);
@@ -5128,6 +5240,13 @@ test_isPUNCT_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isPUNCT(UV ord)
+    CODE:
+        RETVAL = isPUNCT(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isPUNCT_A(UV ord)
     CODE:
         RETVAL = isPUNCT_A(ord);
@@ -5177,6 +5296,13 @@ test_isXDIGIT_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isXDIGIT(UV ord)
+    CODE:
+        RETVAL = isXDIGIT(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isXDIGIT_A(UV ord)
     CODE:
         RETVAL = isXDIGIT_A(ord);
@@ -5226,6 +5352,13 @@ test_isPSXSPC_LC_uvchr(UV ord)
         RETVAL
 
 bool
+test_isPSXSPC(UV ord)
+    CODE:
+        RETVAL = isPSXSPC(ord);
+    OUTPUT:
+        RETVAL
+
+bool
 test_isPSXSPC_A(UV ord)
     CODE:
         RETVAL = isPSXSPC_A(ord);
index 543104b..6e6fef5 100644 (file)
@@ -207,7 +207,9 @@ foreach my $name (sort keys %properties, 'octal') {
             next;
         }
 
-        foreach my $suffix (qw(_A _L1 _LC  _uni _LC_uvchr _utf8 _LC_utf8)) {
+        foreach my $suffix ("", "_A", "_L1", "_LC", "_uni", "_LC_uvchr",
+                            "_utf8", "_LC_utf8")
+        {
 
             # Not all possible macros have been defined
             if ($name eq 'vertws') {
@@ -223,7 +225,7 @@ foreach my $name (sort keys %properties, 'octal') {
                 next if $suffix eq '_A' || $suffix eq '_L1';
             }
             elsif ($name eq 'octal') {
-                next if $suffix ne '_A' && $suffix ne '_L1';
+                next if $suffix ne ""  && $suffix ne '_A' && $suffix ne '_L1';
             }
 
             foreach my $locale ("", $base_locale, $utf8_locale) {
@@ -246,14 +248,16 @@ foreach my $name (sort keys %properties, 'octal') {
                             # The single byte functions are false for
                             # above-Latin1
                             if ($i >= 256) {
-                                $truth = 0 if $suffix =~ / ^ _A | _L [1C] $ /x;
+                                $truth = 0
+                                        if $suffix=~ / ^ ( _A | _L [1C] )? $ /x;
                             }
                             elsif (utf8::native_to_unicode($i) >= 128) {
 
-                                # The _A functions are false
+                                # The no-suffix and _A functions are false
                                 # for non-ASCII.  So are  _LC  functions on a
                                 # non-UTF-8 locale
                                 $truth = 0 if    $suffix eq "_A"
+                                              || $suffix eq ""
                                               || (     $suffix =~ /LC/
                                                   && ! $locale_is_utf8);
                             }