dos-djgpp updates (from Laszlo Molnar <laszlo.molnar@eth.ericsson.se>)
[p5sagit/p5-mst-13.2.git] / t / lib / dumper.t
index 96c07ea..3167535 100755 (executable)
@@ -9,6 +9,8 @@ BEGIN {
 }
 
 use Data::Dumper;
+use Config;
+my $Is_ebcdic = defined($Config{'ebcdic'}) && $Config{'ebcdic'} eq 'define';
 
 $Data::Dumper::Pad = "#";
 my $TMAX;
@@ -20,6 +22,16 @@ sub TEST {
   my $string = shift;
   my $t = eval $string;
   ++$TNUM;
+  $t =~ s/([A-Z]+)\(0x[0-9a-f]+\)/$1(0xdeadbeef)/g
+      if ($WANT =~ /deadbeef/);
+  if ($Is_ebcdic) {
+      # these data need massaging with non ascii character sets
+      # because of hashing order differences
+      $WANT = join("\n",sort(split(/\n/,$WANT)));
+      $WANT =~ s/\,$//mg;
+      $t    = join("\n",sort(split(/\n/,$t)));
+      $t    =~ s/\,$//mg;
+  }
   print( ($t eq $WANT and not $@) ? "ok $TNUM\n"
        : "not ok $TNUM\n--Expected--\n$WANT\n--Got--\n$@$t\n");
 
@@ -29,17 +41,26 @@ sub TEST {
 
   $t = eval $string;
   ++$TNUM;
+  $t =~ s/([A-Z]+)\(0x[0-9a-f]+\)/$1(0xdeadbeef)/g
+      if ($WANT =~ /deadbeef/);
+  if ($Is_ebcdic) {
+      # here too there are hashing order differences
+      $WANT = join("\n",sort(split(/\n/,$WANT)));
+      $WANT =~ s/\,$//mg;
+      $t    = join("\n",sort(split(/\n/,$t)));
+      $t    =~ s/\,$//mg;
+  }
   print( ($t eq $WANT and not $@) ? "ok $TNUM\n"
        : "not ok $TNUM\n--Expected--\n$WANT\n--Got--\n$@$t\n");
 }
 
 if (defined &Data::Dumper::Dumpxs) {
   print "### XS extension loaded, will run XS tests\n";
-  $TMAX = 162; $XS = 1;
+  $TMAX = 186; $XS = 1;
 }
 else {
   print "### XS extensions not loaded, will NOT run XS tests\n";
-  $TMAX = 81; $XS = 0;
+  $TMAX = 93; $XS = 0;
 }
 
 print "1..$TMAX\n";
@@ -280,11 +301,11 @@ EOT
 #           #0
 #           10,
 #           #1
-#           '',
+#           do{my $o},
 #           #2
 #           {
 #             'a' => 1,
-#             'b' => '',
+#             'b' => do{my $o},
 #             'c' => [],
 #             'd' => {}
 #           }
@@ -310,10 +331,10 @@ EOT
 #*::foo = \5;
 #*::foo = [
 #  10,
-#  '',
+#  do{my $o},
 #  {
 #    'a' => 1,
-#    'b' => '',
+#    'b' => do{my $o},
 #    'c' => [],
 #    'd' => {}
 #  }
@@ -343,7 +364,7 @@ EOT
 #*::foo = \@bar;
 #*::foo = {
 #  'a' => 1,
-#  'b' => '',
+#  'b' => do{my $o},
 #  'c' => [],
 #  'd' => {}
 #};
@@ -370,7 +391,7 @@ EOT
 #*::foo = $bar;
 #*::foo = {
 #  'a' => 1,
-#  'b' => '',
+#  'b' => do{my $o},
 #  'c' => [],
 #  'd' => {}
 #};
@@ -619,7 +640,7 @@ TEST q(Data::Dumper->new([\&z,$c],['*a','*c'])->Seen({'*b' => \&z})->Dumpxs;)
   $WANT = <<'EOT';
 #@a = (
 #  undef,
-#  ''
+#  do{my $o}
 #);
 #$a[1] = \$a[0];
 EOT
@@ -656,7 +677,7 @@ TEST q(Data::Dumper->new([$a,$b],['a','b'])->Purity(1)->Dumpxs;)
 #  {
 #    a => \[
 #        {
-#          c => ''
+#          c => do{my $o}
 #        },
 #        {
 #          d => \[]
@@ -702,3 +723,79 @@ TEST q(Data::Dumper->new([$a,$b,$c],['a','b','c'])->Purity(1)->Dump;);
 TEST q(Data::Dumper->new([$a,$b,$c],['a','b','c'])->Purity(1)->Dumpxs;)
        if $XS;
 }
+
+{
+    $f = "pearl";
+    $e = [        $f ];
+    $d = { 'e' => $e };
+    $c = [        $d ];
+    $b = { 'c' => $c };
+    $a = { 'b' => $b };
+
+############# 163
+##
+  $WANT = <<'EOT';
+#$a = {
+#  b => {
+#    c => [
+#      {
+#        e => 'ARRAY(0xdeadbeef)'
+#      }
+#    ]
+#  }
+#};
+#$b = $a->{b};
+#$c = $a->{b}{c};
+EOT
+
+TEST q(Data::Dumper->new([$a,$b,$c],['a','b','c'])->Maxdepth(4)->Dump;);
+TEST q(Data::Dumper->new([$a,$b,$c],['a','b','c'])->Maxdepth(4)->Dumpxs;)
+       if $XS;
+
+############# 169
+##
+  $WANT = <<'EOT';
+#$a = {
+#  b => 'HASH(0xdeadbeef)'
+#};
+#$b = $a->{b};
+#$c = [
+#  'HASH(0xdeadbeef)'
+#];
+EOT
+
+TEST q(Data::Dumper->new([$a,$b,$c],['a','b','c'])->Maxdepth(1)->Dump;);
+TEST q(Data::Dumper->new([$a,$b,$c],['a','b','c'])->Maxdepth(1)->Dumpxs;)
+       if $XS;
+}
+
+{
+    $a = \$a;
+    $b = [$a];
+
+############# 175
+##
+  $WANT = <<'EOT';
+#$b = [
+#  \$b->[0]
+#];
+EOT
+
+TEST q(Data::Dumper->new([$b],['b'])->Purity(0)->Dump;);
+TEST q(Data::Dumper->new([$b],['b'])->Purity(0)->Dumpxs;)
+       if $XS;
+
+############# 181
+##
+  $WANT = <<'EOT';
+#$b = [
+#  \do{my $o}
+#];
+#${$b->[0]} = $b->[0];
+EOT
+
+
+TEST q(Data::Dumper->new([$b],['b'])->Purity(1)->Dump;);
+TEST q(Data::Dumper->new([$b],['b'])->Purity(1)->Dumpxs;)
+       if $XS;
+}