2 # t/deparse.t - Test Deparse()
6 require Config; import Config;
8 if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
9 print "1..0 # Skip: Data::Dumper was not built\n";
18 use Test::More tests => 8;
19 use lib qw( ./t/lib );
20 use Testing qw( _dumptostr );
22 # Thanks to Arthur Axel "fREW" Schmidt:
23 # http://search.cpan.org/~frew/Data-Dumper-Concise-2.020/lib/Data/Dumper/Concise.pm
25 note("\$Data::Dumper::Deparse and Deparse()");
28 my ($obj, %dumps, $deparse, $starting);
30 my $struct = { foo => "bar\nbaz", quux => sub { "fleem" } };
31 $obj = Data::Dumper->new( [ $struct ] );
32 $dumps{'noprev'} = _dumptostr($obj);
34 $starting = $Data::Dumper::Deparse;
35 local $Data::Dumper::Deparse = 0;
36 $obj = Data::Dumper->new( [ $struct ] );
37 $dumps{'dddzero'} = _dumptostr($obj);
38 local $Data::Dumper::Deparse = $starting;
40 $obj = Data::Dumper->new( [ $struct ] );
42 $dumps{'objempty'} = _dumptostr($obj);
44 $obj = Data::Dumper->new( [ $struct ] );
46 $dumps{'objzero'} = _dumptostr($obj);
48 is($dumps{'noprev'}, $dumps{'dddzero'},
49 "No previous setting and \$Data::Dumper::Deparse = 0 are equivalent");
50 is($dumps{'noprev'}, $dumps{'objempty'},
51 "No previous setting and Deparse() are equivalent");
52 is($dumps{'noprev'}, $dumps{'objzero'},
53 "No previous setting and Deparse(0) are equivalent");
55 local $Data::Dumper::Deparse = 1;
56 $obj = Data::Dumper->new( [ $struct ] );
57 $dumps{'dddtrue'} = _dumptostr($obj);
58 local $Data::Dumper::Deparse = $starting;
60 $obj = Data::Dumper->new( [ $struct ] );
62 $dumps{'objone'} = _dumptostr($obj);
64 is($dumps{'dddtrue'}, $dumps{'objone'},
65 "\$Data::Dumper::Deparse = 1 and Deparse(1) are equivalent");
67 isnt($dumps{'dddzero'}, $dumps{'dddtrue'},
68 "\$Data::Dumper::Deparse = 0 differs from \$Data::Dumper::Deparse = 1");
70 like($dumps{'dddzero'},
71 qr/quux.*?sub.*?DUMMY/s,
72 "\$Data::Dumper::Deparse = 0 reports DUMMY instead of deparsing coderef");
73 unlike($dumps{'dddtrue'},
74 qr/quux.*?sub.*?DUMMY/s,
75 "\$Data::Dumper::Deparse = 1 does not report DUMMY");
76 like($dumps{'dddtrue'},
77 qr/quux.*?sub.*?use\sstrict.*?fleem/s,
78 "\$Data::Dumper::Deparse = 1 deparses coderef");