1#!./perl 2 3use strict; 4use warnings; 5 6use Test::More; 7use XS::APItest; 8 9# basic constants 10{ 11 ok(SvIsBOOL(!!0), 'false is boolean'); 12 ok(SvIsBOOL(!!1), 'true is boolean'); 13 14 ok(!SvIsBOOL(0), '0 is not boolean'); 15 ok(!SvIsBOOL(1), '1 is not boolean'); 16 ok(!SvIsBOOL(""), '"" is not boolean'); 17} 18 19# variables 20{ 21 my $falsevar = !!0; 22 my $truevar = !!1; 23 24 ok(SvIsBOOL($falsevar), 'false var is boolean'); 25 ok(SvIsBOOL($truevar), 'true var is boolean'); 26 27 my $str = "$truevar"; 28 my $num = $truevar + 0; 29 30 ok(!SvIsBOOL($str), 'stringified true is not boolean'); 31 ok(!SvIsBOOL($num), 'numified true is not boolean'); 32 33 ok(SvIsBOOL($truevar), 'true var remains boolean after stringification and numification'); 34} 35 36# aggregate members 37{ 38 my %hash = ( false => !!0, true => !!1 ); 39 40 ok(SvIsBOOL($hash{false}), 'false HELEM is boolean'); 41 ok(SvIsBOOL($hash{true}), 'true HELEM is boolean'); 42 43 # We won't test AELEM but it's likely to be the same 44} 45 46 47is(test_bool_internals(), 0, "Bulk test internal bool related APIs"); 48 49 50done_testing; 51