1#!./perl -w
2# t/sparseseen.t - Test Sparseseen()
3
4use strict;
5use warnings;
6
7use Data::Dumper;
8use Test::More tests =>  8;
9use lib qw( ./t/lib );
10use Testing qw( _dumptostr );
11
12my %d = (
13    delta   => 'd',
14    beta    => 'b',
15    gamma   => 'c',
16    alpha   => 'a',
17);
18
19run_tests_for_sparseseen();
20SKIP: {
21    skip "XS version was unavailable, so we already ran with pure Perl", 4
22        if $Data::Dumper::Useperl;
23    local $Data::Dumper::Useperl = 1;
24    run_tests_for_sparseseen();
25}
26
27sub run_tests_for_sparseseen {
28    note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
29
30    my ($obj, %dumps, $sparseseen, $starting);
31
32    note("\$Data::Dumper::Sparseseen and Sparseseen() set to true value");
33
34    $starting = $Data::Dumper::Sparseseen;
35    $sparseseen = 1;
36    local $Data::Dumper::Sparseseen = $sparseseen;
37    $obj = Data::Dumper->new( [ \%d ] );
38    $dumps{'ddssone'} = _dumptostr($obj);
39    local $Data::Dumper::Sparseseen = $starting;
40
41    $obj = Data::Dumper->new( [ \%d ] );
42    $obj->Sparseseen($sparseseen);
43    $dumps{'objssone'} = _dumptostr($obj);
44
45    is($dumps{'ddssone'}, $dumps{'objssone'},
46        "\$Data::Dumper::Sparseseen = 1 and Sparseseen(1) are equivalent");
47    %dumps = ();
48
49    $sparseseen = 0;
50    local $Data::Dumper::Sparseseen = $sparseseen;
51    $obj = Data::Dumper->new( [ \%d ] );
52    $dumps{'ddsszero'} = _dumptostr($obj);
53    local $Data::Dumper::Sparseseen = $starting;
54
55    $obj = Data::Dumper->new( [ \%d ] );
56    $obj->Sparseseen($sparseseen);
57    $dumps{'objsszero'} = _dumptostr($obj);
58
59    is($dumps{'ddsszero'}, $dumps{'objsszero'},
60        "\$Data::Dumper::Sparseseen = 0 and Sparseseen(0) are equivalent");
61
62    $sparseseen = undef;
63    local $Data::Dumper::Sparseseen = $sparseseen;
64    $obj = Data::Dumper->new( [ \%d ] );
65    $dumps{'ddssundef'} = _dumptostr($obj);
66    local $Data::Dumper::Sparseseen = $starting;
67
68    $obj = Data::Dumper->new( [ \%d ] );
69    $obj->Sparseseen($sparseseen);
70    $dumps{'objssundef'} = _dumptostr($obj);
71
72    is($dumps{'ddssundef'}, $dumps{'objssundef'},
73        "\$Data::Dumper::Sparseseen = undef and Sparseseen(undef) are equivalent");
74    is($dumps{'ddsszero'}, $dumps{'objssundef'},
75        "\$Data::Dumper::Sparseseen = undef and = 0 are equivalent");
76    %dumps = ();
77}
78
79