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