1#!./perl 2 3BEGIN { 4 unshift @INC, 't'; 5 require Config; 6 if (($Config::Config{'extensions'} !~ /\bB\b/) ){ 7 print "1..0 # Skip -- Perl configured without B module\n"; 8 exit 0; 9 } 10} 11 12use strict; 13use warnings; 14 15use B; 16use Test::More; 17 18$| = 1; 19 20{ 21 note "testing true"; 22 my $bool = ( 1 == 1 ); 23 my $sv = B::svref_2object(\$bool); 24 ok $sv->IsBOOL, "got a boolean"; 25 ok $sv->TRUE_nomg, "TRUE_nomg is true"; 26 ok $sv->TRUE, "TRUE is true"; 27} 28 29{ 30 note "testing false"; 31 my $bool = ( 1 == 0 ); 32 my $sv = B::svref_2object(\$bool); 33 34 ok $sv->IsBOOL, "got a boolean"; 35 ok !$sv->TRUE_nomg, "TRUE_nomg is false"; 36 ok !$sv->TRUE, "TRUE is false"; 37} 38 39{ 40 note "not a boolean"; 41 my $iv = 42; 42 my $sv = B::svref_2object(\$iv); 43 44 ok !$sv->IsBOOL, "not a boolean"; 45 ok $sv->TRUE_nomg, "TRUE_nomg is true"; 46 ok $sv->TRUE, "TRUE is true"; 47} 48 49{ 50 note "not a boolean"; 51 my $iv = 0; 52 my $sv = B::svref_2object(\$iv); 53 54 ok !$sv->IsBOOL, "not a boolean"; 55 ok !$sv->TRUE_nomg, "TRUE_nomg is false"; 56 ok !$sv->TRUE, "TRUE is false"; 57} 58 59done_testing(); 60