xref: /openbsd/gnu/usr.bin/perl/dist/Data-Dumper/t/seen.t (revision 73471bf0)
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