This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add tests for IVdf, UVuf, IV_MAX and UV_MAX
authorPali <pali@cpan.org>
Mon, 1 Jul 2019 12:37:19 +0000 (14:37 +0200)
committerNicolas R <atoomic@cpan.org>
Fri, 27 Sep 2019 22:39:27 +0000 (16:39 -0600)
(cherry picked from commit 2b31db974097bbec6a64078e2a3f8c1c166236ad)
Signed-off-by: Nicolas R <atoomic@cpan.org>
dist/Devel-PPPort/parts/inc/format
dist/Devel-PPPort/t/format.t

index 03c632d..7e2b304 100644 (file)
@@ -55,9 +55,54 @@ croak_NVgf(num)
         PPCODE:
                 Perl_croak(aTHX_ "%.20" NVgf "\n", num);
 
-=tests plan => 1
+SV *
+sprintf_iv(iv)
+        IV iv
+CODE:
+        RETVAL = newSVpvf("XX_%" IVdf "_XX", iv);
+OUTPUT:
+        RETVAL
+
+SV *
+sprintf_uv(uv)
+        UV uv
+CODE:
+        RETVAL = newSVpvf("XX_%" UVuf "_XX", uv);
+OUTPUT:
+        RETVAL
+
+SV *
+sprintf_ivmax()
+CODE:
+        RETVAL = newSVpvf("%" IVdf, IV_MAX);
+OUTPUT:
+        RETVAL
+
+SV *
+sprintf_uvmax()
+CODE:
+        RETVAL = newSVpvf("%" UVuf, UV_MAX);
+OUTPUT:
+        RETVAL
+
+=tests plan => 5
+
+use Config;
 
 my $num = 1.12345678901234567890;
 
 eval { Devel::PPPort::croak_NVgf($num) };
 ok($@ =~ /^1.1234567890/);
+
+ok(Devel::PPPort::sprintf_iv(-8), 'XX_-8_XX');
+ok(Devel::PPPort::sprintf_uv(15), 'XX_15_XX');
+
+my $ivsize = $Config::Config{ivsize};
+my $ivmax = ($ivsize == 4) ? '2147483647' : ($ivsize == 8) ? '9223372036854775807' : 0;
+my $uvmax = ($ivsize == 4) ? '4294967295' : ($ivsize == 8) ? '18446744073709551615' : 0;
+if ($ivmax == 0) {
+    skip 'skip: unknown ivsize', 0 for 1..2;
+} else {
+    ok(Devel::PPPort::sprintf_ivmax(), $ivmax);
+    ok(Devel::PPPort::sprintf_uvmax(), $uvmax);
+}
index 7933c4b..5c06ab1 100644 (file)
@@ -30,9 +30,9 @@ BEGIN {
     require 'testutil.pl' if $@;
   }
 
-  if (1) {
+  if (5) {
     load();
-    plan(tests => 1);
+    plan(tests => 5);
   }
 }
 
@@ -48,8 +48,23 @@ bootstrap Devel::PPPort;
 
 package main;
 
+use Config;
+
 my $num = 1.12345678901234567890;
 
 eval { Devel::PPPort::croak_NVgf($num) };
 ok($@ =~ /^1.1234567890/);
 
+ok(Devel::PPPort::sprintf_iv(-8), 'XX_-8_XX');
+ok(Devel::PPPort::sprintf_uv(15), 'XX_15_XX');
+
+my $ivsize = $Config::Config{ivsize};
+my $ivmax = ($ivsize == 4) ? '2147483647' : ($ivsize == 8) ? '9223372036854775807' : 0;
+my $uvmax = ($ivsize == 4) ? '4294967295' : ($ivsize == 8) ? '18446744073709551615' : 0;
+if ($ivmax == 0) {
+    skip 'skip: unknown ivsize', 0 for 1..2;
+} else {
+    ok(Devel::PPPort::sprintf_ivmax(), $ivmax);
+    ok(Devel::PPPort::sprintf_uvmax(), $uvmax);
+}
+