toaster.t revision 1.1.1.2
1#!./perl -w
2# t/toaster.t - Test Toaster()
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_toaster();
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_toaster();
25}
26
27sub run_tests_for_toaster {
28    note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
29
30    my ($obj, %dumps, $toaster, $starting);
31
32    note("\$Data::Dumper::Toaster and Toaster() set to true value");
33
34    $starting = $Data::Dumper::Toaster;
35    $toaster = 1;
36    local $Data::Dumper::Toaster = $toaster;
37    $obj = Data::Dumper->new( [ \%d ] );
38    $dumps{'ddtoasterone'} = _dumptostr($obj);
39    local $Data::Dumper::Toaster = $starting;
40
41    $obj = Data::Dumper->new( [ \%d ] );
42    $obj->Toaster($toaster);
43    $dumps{'objtoasterone'} = _dumptostr($obj);
44
45    is($dumps{'ddtoasterone'}, $dumps{'objtoasterone'},
46        "\$Data::Dumper::Toaster = 1 and Toaster(1) are equivalent");
47    %dumps = ();
48
49    $toaster = 0;
50    local $Data::Dumper::Toaster = $toaster;
51    $obj = Data::Dumper->new( [ \%d ] );
52    $dumps{'ddtoasterzero'} = _dumptostr($obj);
53    local $Data::Dumper::Toaster = $starting;
54
55    $obj = Data::Dumper->new( [ \%d ] );
56    $obj->Toaster($toaster);
57    $dumps{'objtoasterzero'} = _dumptostr($obj);
58
59    is($dumps{'ddtoasterzero'}, $dumps{'objtoasterzero'},
60        "\$Data::Dumper::Toaster = 0 and Toaster(0) are equivalent");
61
62    $toaster = undef;
63    local $Data::Dumper::Toaster = $toaster;
64    $obj = Data::Dumper->new( [ \%d ] );
65    $dumps{'ddtoasterundef'} = _dumptostr($obj);
66    local $Data::Dumper::Toaster = $starting;
67
68    $obj = Data::Dumper->new( [ \%d ] );
69    $obj->Toaster($toaster);
70    $dumps{'objtoasterundef'} = _dumptostr($obj);
71
72    is($dumps{'ddtoasterundef'}, $dumps{'objtoasterundef'},
73        "\$Data::Dumper::Toaster = undef and Toaster(undef) are equivalent");
74    is($dumps{'ddtoasterzero'}, $dumps{'objtoasterundef'},
75        "\$Data::Dumper::Toaster = undef and = 0 are equivalent");
76    %dumps = ();
77}
78
79