⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dumper.t

📁 UNIX下perl实现代码
💻 T
字号:
#!./perl -w## testsuite for Data::Dumper#BEGIN {    chdir 't' if -d 't';    @INC = '../lib';    require Config; import Config;    if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {      print "1..0 # Skip: Data::Dumper was not built\n";      exit 0;    }}use Data::Dumper;use Config;my $Is_ebcdic = defined($Config{'ebcdic'}) && $Config{'ebcdic'} eq 'define';$Data::Dumper::Pad = "#";my $TMAX;my $XS;my $TNUM = 0;my $WANT = '';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");  ++$TNUM;  eval "$t";  print $@ ? "not ok $TNUM\n# \$@ says: $@\n" : "ok $TNUM\n";  $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 = 186; $XS = 1;}else {  print "### XS extensions not loaded, will NOT run XS tests\n";  $TMAX = 93; $XS = 0;}print "1..$TMAX\n";##########################@c = ('c');$c = \@c;$b = {};$a = [1, $b, $c];$b->{a} = $a;$b->{b} = $a->[1];$b->{c} = $a->[2];############# 1##$WANT = <<'EOT';#$a = [#       1,#       {#         'a' => $a,#         'b' => $a->[1],#         'c' => [#                  'c'#                ]#       },#       $a->[1]{'c'}#     ];#$b = $a->[1];#$c = $a->[1]{'c'};EOTTEST q(Data::Dumper->Dump([$a,$b,$c], [qw(a b c)]));TEST q(Data::Dumper->Dumpxs([$a,$b,$c], [qw(a b c)])) if $XS;############# 7##$WANT = <<'EOT';#@a = (#       1,#       {#         'a' => [],#         'b' => {},#         'c' => [#                  'c'#                ]#       },#       []#     );#$a[1]{'a'} = \@a;#$a[1]{'b'} = $a[1];#$a[2] = $a[1]{'c'};#$b = $a[1];EOT$Data::Dumper::Purity = 1;         # fill in the holes for evalTEST q(Data::Dumper->Dump([$a, $b], [qw(*a b)])); # print as @aTEST q(Data::Dumper->Dumpxs([$a, $b], [qw(*a b)])) if $XS;############# 13##$WANT = <<'EOT';#%b = (#       'a' => [#                1,#                {},#                [#                  'c'#                ]#              ],#       'b' => {},#       'c' => []#     );#$b{'a'}[1] = \%b;#$b{'b'} = \%b;#$b{'c'} = $b{'a'}[2];#$a = $b{'a'};EOTTEST q(Data::Dumper->Dump([$b, $a], [qw(*b a)])); # print as %bTEST q(Data::Dumper->Dumpxs([$b, $a], [qw(*b a)])) if $XS;############# 19##$WANT = <<'EOT';#$a = [#  1,#  {#    'a' => [],#    'b' => {},#    'c' => []#  },#  []#];#$a->[1]{'a'} = $a;#$a->[1]{'b'} = $a->[1];#$a->[1]{'c'} = \@c;#$a->[2] = \@c;#$b = $a->[1];EOT$Data::Dumper::Indent = 1;TEST q(       $d = Data::Dumper->new([$a,$b], [qw(a b)]);       $d->Seen({'*c' => $c});       $d->Dump;      );if ($XS) {  TEST q(	 $d = Data::Dumper->new([$a,$b], [qw(a b)]);	 $d->Seen({'*c' => $c});	 $d->Dumpxs;	);}############# 25##$WANT = <<'EOT';#$a = [#       #0#       1,#       #1#       {#         a => $a,#         b => $a->[1],#         c => [#                #0#                'c'#              ]#       },#       #2#       $a->[1]{c}#     ];#$b = $a->[1];EOT$d->Indent(3);$d->Purity(0)->Quotekeys(0);TEST q( $d->Reset; $d->Dump );TEST q( $d->Reset; $d->Dumpxs ) if $XS;############# 31##$WANT = <<'EOT';#$VAR1 = [#  1,#  {#    'a' => [],#    'b' => {},#    'c' => [#      'c'#    ]#  },#  []#];#$VAR1->[1]{'a'} = $VAR1;#$VAR1->[1]{'b'} = $VAR1->[1];#$VAR1->[2] = $VAR1->[1]{'c'};EOTTEST q(Dumper($a));TEST q(Data::Dumper::DumperX($a)) if $XS;############# 37##$WANT = <<'EOT';#[#  1,#  {#    a => $VAR1,#    b => $VAR1->[1],#    c => [#      'c'#    ]#  },#  $VAR1->[1]{c}#]EOT{  local $Data::Dumper::Purity = 0;  local $Data::Dumper::Quotekeys = 0;  local $Data::Dumper::Terse = 1;  TEST q(Dumper($a));  TEST q(Data::Dumper::DumperX($a)) if $XS;}############# 43##$WANT = <<'EOT';#$VAR1 = {#  "abc\0'\efg" => "mno\0",#  "reftest" => \\1#};EOT$foo = { "abc\000\'\efg" => "mno\000",         "reftest" => \\1,       };{  local $Data::Dumper::Useqq = 1;  TEST q(Dumper($foo));}  $WANT = <<"EOT";#\$VAR1 = {#  'abc\0\\'\efg' => 'mno\0',#  'reftest' => \\\\1#};EOT  {    local $Data::Dumper::Useqq = 1;    TEST q(Data::Dumper::DumperX($foo)) if $XS;   # cheat  }##########################{  package main;  use Data::Dumper;  $foo = 5;  @foo = (-10,\*foo);  %foo = (a=>1,b=>\$foo,c=>\@foo);  $foo{d} = \%foo;  $foo[2] = \%foo;############# 49##  $WANT = <<'EOT';#$foo = \*::foo;#*::foo = \5;#*::foo = [#           #0#           -10,#           #1#           do{my $o},#           #2#           {#             'a' => 1,#             'b' => do{my $o},#             'c' => [],#             'd' => {}#           }#         ];#*::foo{ARRAY}->[1] = $foo;#*::foo{ARRAY}->[2]{'b'} = *::foo{SCALAR};#*::foo{ARRAY}->[2]{'c'} = *::foo{ARRAY};#*::foo{ARRAY}->[2]{'d'} = *::foo{ARRAY}->[2];#*::foo = *::foo{ARRAY}->[2];#@bar = @{*::foo{ARRAY}};#%baz = %{*::foo{ARRAY}->[2]};EOT  $Data::Dumper::Purity = 1;  $Data::Dumper::Indent = 3;  TEST q(Data::Dumper->Dump([\\*foo, \\@foo, \\%foo], ['*foo', '*bar', '*baz']));  TEST q(Data::Dumper->Dumpxs([\\*foo, \\@foo, \\%foo], ['*foo', '*bar', '*baz'])) if $XS;############# 55##  $WANT = <<'EOT';#$foo = \*::foo;#*::foo = \5;#*::foo = [#  -10,#  do{my $o},#  {#    'a' => 1,#    'b' => do{my $o},#    'c' => [],#    'd' => {}#  }#];#*::foo{ARRAY}->[1] = $foo;#*::foo{ARRAY}->[2]{'b'} = *::foo{SCALAR};#*::foo{ARRAY}->[2]{'c'} = *::foo{ARRAY};#*::foo{ARRAY}->[2]{'d'} = *::foo{ARRAY}->[2];#*::foo = *::foo{ARRAY}->[2];#$bar = *::foo{ARRAY};#$baz = *::foo{ARRAY}->[2];EOT  $Data::Dumper::Indent = 1;  TEST q(Data::Dumper->Dump([\\*foo, \\@foo, \\%foo], ['foo', 'bar', 'baz']));  TEST q(Data::Dumper->Dumpxs([\\*foo, \\@foo, \\%foo], ['foo', 'bar', 'baz'])) if $XS;############# 61##  $WANT = <<'EOT';#@bar = (#  -10,#  \*::foo,#  {}#);#*::foo = \5;#*::foo = \@bar;#*::foo = {#  'a' => 1,#  'b' => do{my $o},#  'c' => [],#  'd' => {}#};#*::foo{HASH}->{'b'} = *::foo{SCALAR};#*::foo{HASH}->{'c'} = \@bar;#*::foo{HASH}->{'d'} = *::foo{HASH};#$bar[2] = *::foo{HASH};#%baz = %{*::foo{HASH}};#$foo = $bar[1];EOT  TEST q(Data::Dumper->Dump([\\@foo, \\%foo, \\*foo], ['*bar', '*baz', '*foo']));  TEST q(Data::Dumper->Dumpxs([\\@foo, \\%foo, \\*foo], ['*bar', '*baz', '*foo'])) if $XS;############# 67##  $WANT = <<'EOT';#$bar = [#  -10,#  \*::foo,#  {}#];#*::foo = \5;#*::foo = $bar;#*::foo = {#  'a' => 1,#  'b' => do{my $o},#  'c' => [],#  'd' => {}#};#*::foo{HASH}->{'b'} = *::foo{SCALAR};#*::foo{HASH}->{'c'} = $bar;#*::foo{HASH}->{'d'} = *::foo{HASH};#$bar->[2] = *::foo{HASH};#$baz = *::foo{HASH};#$foo = $bar->[1];EOT  TEST q(Data::Dumper->Dump([\\@foo, \\%foo, \\*foo], ['bar', 'baz', 'foo']));  TEST q(Data::Dumper->Dumpxs([\\@foo, \\%foo, \\*foo], ['bar', 'baz', 'foo'])) if $XS;############# 73##  $WANT = <<'EOT';#$foo = \*::foo;#@bar = (#  -10,#  $foo,#  {#    a => 1,#    b => \5,#    c => \@bar,#    d => $bar[2]#  }#);#%baz = %{$bar[2]};EOT  $Data::Dumper::Purity = 0;  $Data::Dumper::Quotekeys = 0;  TEST q(Data::Dumper->Dump([\\*foo, \\@foo, \\%foo], ['*foo', '*bar', '*baz']));  TEST q(Data::Dumper->Dumpxs([\\*foo, \\@foo, \\%foo], ['*foo', '*bar', '*baz'])) if $XS;############# 79##  $WANT = <<'EOT';#$foo = \*::foo;#$bar = [#  -10,#  $foo,#  {#    a => 1,#    b => \5,#    c => $bar,#    d => $bar->[2]#  }#];#$baz = $bar->[2];EOT  TEST q(Data::Dumper->Dump([\\*foo, \\@foo, \\%foo], ['foo', 'bar', 'baz']));  TEST q(Data::Dumper->Dumpxs([\\*foo, \\@foo, \\%foo], ['foo', 'bar', 'baz'])) if $XS;}##########################{  package main;  @dogs = ( 'Fido', 'Wags' );  %kennel = (            First => \$dogs[0],            Second =>  \$dogs[1],           );  $dogs[2] = \%kennel;  $mutts = \%kennel;  $mutts = $mutts;         # avoid warning  ############# 85##  $WANT = <<'EOT';#%kennels = (#  First => \'Fido',#  Second => \'Wags'#);#@dogs = (#  ${$kennels{First}},#  ${$kennels{Second}},#  \%kennels#);#%mutts = %kennels;EOT  TEST q(	 $d = Data::Dumper->new([\\%kennel, \\@dogs, $mutts],				[qw(*kennels *dogs *mutts)] );	 $d->Dump;	);  if ($XS) {    TEST q(	   $d = Data::Dumper->new([\\%kennel, \\@dogs, $mutts],				  [qw(*kennels *dogs *mutts)] );	   $d->Dumpxs;	  );  }  ############# 91##  $WANT = <<'EOT';#%kennels = %kennels;#@dogs = @dogs;#%mutts = %kennels;EOT  TEST q($d->Dump);  TEST q($d->Dumpxs) if $XS;  ############# 97##  $WANT = <<'EOT';#%kennels = (#  First => \'Fido',#  Second => \'Wags'#);#@dogs = (#  ${$kennels{First}},#  ${$kennels{Second}},#  \%kennels#);#%mutts = %kennels;EOT    TEST q($d->Reset; $d->Dump);  if ($XS) {    TEST q($d->Reset; $d->Dumpxs);  }############# 103##  $WANT = <<'EOT';#@dogs = (#  'Fido',#  'Wags',#  {#    First => \$dogs[0],#    Second => \$dogs[1]#  }#);#%kennels = %{$dogs[2]};#%mutts = %{$dogs[2]};EOT  TEST q(	 $d = Data::Dumper->new([\\@dogs, \\%kennel, $mutts],				[qw(*dogs *kennels *mutts)] );	 $d->Dump;	);  if ($XS) {    TEST q(	   $d = Data::Dumper->new([\\@dogs, \\%kennel, $mutts],				  [qw(*dogs *kennels *mutts)] );	   $d->Dumpxs;	  );  }  ############# 109##  TEST q($d->Reset->Dump);  if ($XS) {    TEST q($d->Reset->Dumpxs);  }############# 115##  $WANT = <<'EOT';#@dogs = (#  'Fido',#  'Wags',#  {#    First => \'Fido',#    Second => \'Wags'#  }#);#%kennels = (#  First => \'Fido',#  Second => \'Wags'#);EOT  TEST q(	 $d = Data::Dumper->new( [\@dogs, \%kennel], [qw(*dogs *kennels)] );	 $d->Deepcopy(1)->Dump;	);  if ($XS) {    TEST q($d->Reset->Dumpxs);  }  }{sub z { print "foo\n" }$c = [ \&z ];############# 121##  $WANT = <<'EOT';#$a = $b;#$c = [#  $b#];EOTTEST q(Data::Dumper->new([\&z,$c],['a','c'])->Seen({'b' => \&z})->Dump;);TEST q(Data::Dumper->new([\&z,$c],['a','c'])->Seen({'b' => \&z})->Dumpxs;)	if $XS;############# 127##  $WANT = <<'EOT';#$a = \&b;#$c = [#  \&b#];EOTTEST q(Data::Dumper->new([\&z,$c],['a','c'])->Seen({'*b' => \&z})->Dump;);TEST q(Data::Dumper->new([\&z,$c],['a','c'])->Seen({'*b' => \&z})->Dumpxs;)	if $XS;############# 133##  $WANT = <<'EOT';#*a = \&b;#@c = (#  \&b#);EOTTEST q(Data::Dumper->new([\&z,$c],['*a','*c'])->Seen({'*b' => \&z})->Dump;);TEST q(Data::Dumper->new([\&z,$c],['*a','*c'])->Seen({'*b' => \&z})->Dumpxs;)	if $XS;}{  $a = [];  $a->[1] = \$a->[0];############# 139##  $WANT = <<'EOT';#@a = (#  undef,#  do{my $o}#);#$a[1] = \$a[0];EOTTEST q(Data::Dumper->new([$a],['*a'])->Purity(1)->Dump;);TEST q(Data::Dumper->new([$a],['*a'])->Purity(1)->Dumpxs;)	if $XS;}{  $a = \\\\\'foo';  $b = $$$a;############# 145##  $WANT = <<'EOT';#$a = \\\\\'foo';#$b = ${${$a}};EOTTEST q(Data::Dumper->new([$a,$b],['a','b'])->Purity(1)->Dump;);TEST q(Data::Dumper->new([$a,$b],['a','b'])->Purity(1)->Dumpxs;)	if $XS;}{  $a = [{ a => \$b }, { b => undef }];  $b = [{ c => \$b }, { d => \$a }];############# 151##  $WANT = <<'EOT';#$a = [#  {#    a => \[#        {#          c => do{my $o}#        },#        {#          d => \[]#        }#      ]#  },#  {#    b => undef#  }#];#${$a->[0]{a}}->[0]->{c} = $a->[0]{a};#${${$a->[0]{a}}->[1]->{d}} = $a;#$b = ${$a->[0]{a}};EOTTEST q(Data::Dumper->new([$a,$b],['a','b'])->Purity(1)->Dump;);TEST q(Data::Dumper->new([$a,$b],['a','b'])->Purity(1)->Dumpxs;)	if $XS;}{  $a = [[[[\\\\\'foo']]]];  $b = $a->[0][0];  $c = $${$b->[0][0]};############# 157##  $WANT = <<'EOT';#$a = [#  [#    [#      [#        \\\\\'foo'#      ]#    ]#  ]#];#$b = $a->[0][0];#$c = ${${$a->[0][0][0][0]}};EOTTEST 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};EOTTEST 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)'#];EOTTEST 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]#];EOTTEST 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];EOTTEST q(Data::Dumper->new([$b],['b'])->Purity(1)->Dump;);TEST q(Data::Dumper->new([$b],['b'])->Purity(1)->Dumpxs;)	if $XS;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -