1#!./perl -w
2# t/toaster.t - Test Toaster()
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 =>  8;
19use lib qw( ./t/lib );
20use Testing qw( _dumptostr );
21
22my %d = (
23    delta   => 'd',
24    beta    => 'b',
25    gamma   => 'c',
26    alpha   => 'a',
27);
28
29run_tests_for_toaster();
30SKIP: {
31    skip "XS version was unavailable, so we already ran with pure Perl", 4
32        if $Data::Dumper::Useperl;
33    local $Data::Dumper::Useperl = 1;
34    run_tests_for_toaster();
35}
36
37sub run_tests_for_toaster {
38    note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
39
40    my ($obj, %dumps, $toaster, $starting);
41
42    note("\$Data::Dumper::Toaster and Toaster() set to true value");
43
44    $starting = $Data::Dumper::Toaster;
45    $toaster = 1;
46    local $Data::Dumper::Toaster = $toaster;
47    $obj = Data::Dumper->new( [ \%d ] );
48    $dumps{'ddtoasterone'} = _dumptostr($obj);
49    local $Data::Dumper::Toaster = $starting;
50
51    $obj = Data::Dumper->new( [ \%d ] );
52    $obj->Toaster($toaster);
53    $dumps{'objtoasterone'} = _dumptostr($obj);
54
55    is($dumps{'ddtoasterone'}, $dumps{'objtoasterone'},
56        "\$Data::Dumper::Toaster = 1 and Toaster(1) are equivalent");
57    %dumps = ();
58
59    $toaster = 0;
60    local $Data::Dumper::Toaster = $toaster;
61    $obj = Data::Dumper->new( [ \%d ] );
62    $dumps{'ddtoasterzero'} = _dumptostr($obj);
63    local $Data::Dumper::Toaster = $starting;
64
65    $obj = Data::Dumper->new( [ \%d ] );
66    $obj->Toaster($toaster);
67    $dumps{'objtoasterzero'} = _dumptostr($obj);
68
69    is($dumps{'ddtoasterzero'}, $dumps{'objtoasterzero'},
70        "\$Data::Dumper::Toaster = 0 and Toaster(0) are equivalent");
71
72    $toaster = undef;
73    local $Data::Dumper::Toaster = $toaster;
74    $obj = Data::Dumper->new( [ \%d ] );
75    $dumps{'ddtoasterundef'} = _dumptostr($obj);
76    local $Data::Dumper::Toaster = $starting;
77
78    $obj = Data::Dumper->new( [ \%d ] );
79    $obj->Toaster($toaster);
80    $dumps{'objtoasterundef'} = _dumptostr($obj);
81
82    is($dumps{'ddtoasterundef'}, $dumps{'objtoasterundef'},
83        "\$Data::Dumper::Toaster = undef and Toaster(undef) are equivalent");
84    is($dumps{'ddtoasterzero'}, $dumps{'objtoasterundef'},
85        "\$Data::Dumper::Toaster = undef and = 0 are equivalent");
86    %dumps = ();
87}
88
89