This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Unicode::UCD: Fix blocks to work on early Unicodes
[perl5.git] / lib / dumpvar.t
index 4101940..f4f55d9 100644 (file)
@@ -3,6 +3,11 @@
 BEGIN {
     chdir 't' if -d 't';
     @INC = '../lib';
+    require Config;
+    if (($Config::Config{'extensions'} !~ m!\bList/Util\b!) ){
+       print "1..0 # Skip -- Perl configured without List::Util module\n";
+       exit 0;
+    }
 }
 
 use strict;
@@ -26,11 +31,12 @@ sub unctrl    { print dumpvar::unctrl($_[0]), "\n" }
 sub uniescape { print dumpvar::uniescape($_[0]), "\n" }
 sub stringify { print dumpvar::stringify($_[0]), "\n" }
 sub dumpvalue { 
+       # Call main::dumpValue exactly as the perl5db.pl calls it.
         local $\ = '';
         local $, = '';
         local $" = ' ';
         my @params = @_;
-        &main::dumpValue(\@params, -1);
+        &main::dumpValue(\@params,-1);
 }
 
 package Foo;
@@ -43,6 +49,11 @@ sub new { my $class = shift; bless [ @_ ], $class }
 
 use overload '""' => sub { "Bar<@{$_[0]}>" };
 
+package Tyre;
+
+sub TIESCALAR{bless[]}
+# other methods intentionally omitted
+
 package main;
 
 my $foo = Foo->new(1..5);
@@ -173,11 +184,22 @@ EXPECT
 1  2
 2  3
 ########
+dumpValue([1..3]);
+EXPECT
+0  1
+1  2
+2  3
+########
 dumpValue({1..4},1);
 EXPECT
 1 => 2
 3 => 4
 ########
+dumpValue({1..4});
+EXPECT
+1 => 2
+3 => 4
+########
 dumpValue($foo,1);
 EXPECT
 0  1
@@ -186,6 +208,14 @@ EXPECT
 3  4
 4  5
 ########
+dumpValue($foo);
+EXPECT
+0  1
+1  2
+2  3
+3  4
+4  5
+########
 dumpValue($bar,1);
 EXPECT
 0  1
@@ -194,6 +224,14 @@ EXPECT
 3  4
 4  5
 ########
+dumpValue($bar);
+EXPECT
+0  1
+1  2
+2  3
+3  4
+4  5
+########
 dumpvalue("a");
 EXPECT
 0  'a'
@@ -281,3 +319,15 @@ EXPECT
 my %x=(a=>1, b=>2); dumpvalue(\%x);
 EXPECT
 /0  HASH\(0x[0-9a-f]+\)\n   'a' => 1\n   'b' => 2\n/i
+########
+dumpvalue(bless[1,2,3,4],"a=b=c");
+EXPECT
+/0  a=b=c=ARRAY\(0x[0-9a-f]+\)\n   0  1\n   1  2\n   2  3\n   3  4\n/i
+########
+local *_; tie $_, 'Tyre'; stringify('');
+EXPECT
+''
+########
+local *_; tie $_, 'Tyre'; unctrl('abc');
+EXPECT
+abc