1#!./perl -w 2# t/seen.t - Test Seen() 3 4BEGIN { 5 if ($ENV{PERL_CORE}){ 6 require Config; import Config; 7 no warnings 'once'; 8 if ($Config{'extensions'} !~ /\bData\/Dumper\b/) { 9 print "1..0 # Skip: Data::Dumper was not built\n"; 10 exit 0; 11 } 12 } 13} 14 15use strict; 16 17use Data::Dumper; 18use Test::More tests => 10; 19use lib qw( ./t/lib ); 20use Testing qw( _dumptostr ); 21 22my ($obj, %dumps); 23 24my (@e, %f, @rv, @g, %h, $k); 25@e = ( qw| alpha beta gamma | ); 26%f = ( epsilon => 'zeta', eta => 'theta' ); 27@g = ( qw| iota kappa lambda | ); 28%h = ( mu => 'nu', omicron => 'pi' ); 29sub j { print "Hello world\n"; } 30$k = 'just another scalar'; 31 32{ 33 my $warning = ''; 34 local $SIG{__WARN__} = sub { $warning = $_[0] }; 35 36 $obj = Data::Dumper->new( [ \@e, \%f ]); 37 @rv = $obj->Seen( { mark => 'snark' } ); 38 like($warning, 39 qr/^Only refs supported, ignoring non-ref item \$mark/, 40 "Got expected warning for non-ref item"); 41} 42 43{ 44 my $warning = ''; 45 local $SIG{__WARN__} = sub { $warning = $_[0] }; 46 47 $obj = Data::Dumper->new( [ \@e, \%f ]); 48 @rv = $obj->Seen( { mark => undef } ); 49 like($warning, 50 qr/^Value of ref must be defined; ignoring undefined item \$mark/, 51 "Got expected warning for undefined value of item"); 52} 53 54{ 55 $obj = Data::Dumper->new( [ \@e, \%f ]); 56 @rv = $obj->Seen( undef ); 57 is(@rv, 0, "Seen(undef) returned empty array"); 58} 59 60{ 61 $obj = Data::Dumper->new( [ \@e, \%f ]); 62 @rv = $obj->Seen( [ qw| mark snark | ] ); 63 is(@rv, 0, "Seen(ref other than hashref) returned empty array"); 64} 65 66{ 67 $obj = Data::Dumper->new( [ \@e, \%f ]); 68 @rv = $obj->Seen( { '*samba' => \@g } ); 69 is_deeply($rv[0], $obj, "Got the object back: value array ref"); 70} 71 72{ 73 $obj = Data::Dumper->new( [ \@e, \%f ]); 74 @rv = $obj->Seen( { '*canasta' => \%h } ); 75 is_deeply($rv[0], $obj, "Got the object back: value hash ref"); 76} 77 78{ 79 $obj = Data::Dumper->new( [ \@e, \%f ]); 80 @rv = $obj->Seen( { '*pinochle' => \&j } ); 81 is_deeply($rv[0], $obj, "Got the object back: value code ref"); 82} 83 84{ 85 $obj = Data::Dumper->new( [ \@e, \%f ]); 86 @rv = $obj->Seen( { '*poker' => \$k } ); 87 is_deeply($rv[0], $obj, "Got the object back: value ref to scalar"); 88} 89 90{ 91 my $l = 'loo'; 92 $obj = Data::Dumper->new( [ \@e, \%f ]); 93 @rv = $obj->Seen( { $l => \$k } ); 94 is_deeply($rv[0], $obj, "Got the object back: value ref to scalar"); 95} 96 97{ 98 my $l = '$loo'; 99 $obj = Data::Dumper->new( [ \@e, \%f ]); 100 @rv = $obj->Seen( { $l => \$k } ); 101 is_deeply($rv[0], $obj, "Got the object back: value ref to scalar"); 102} 103 104