1256a93a4Safresh1#!./perl 2256a93a4Safresh1 3256a93a4Safresh1use strict; 4256a93a4Safresh1use warnings; 5256a93a4Safresh1 6256a93a4Safresh1use Test::More; 7256a93a4Safresh1use XS::APItest; 8256a93a4Safresh1 9256a93a4Safresh1# basic constants 10256a93a4Safresh1{ 11256a93a4Safresh1 ok(SvIsBOOL(!!0), 'false is boolean'); 12256a93a4Safresh1 ok(SvIsBOOL(!!1), 'true is boolean'); 13256a93a4Safresh1 14256a93a4Safresh1 ok(!SvIsBOOL(0), '0 is not boolean'); 15256a93a4Safresh1 ok(!SvIsBOOL(1), '1 is not boolean'); 16256a93a4Safresh1 ok(!SvIsBOOL(""), '"" is not boolean'); 17256a93a4Safresh1} 18256a93a4Safresh1 19256a93a4Safresh1# variables 20256a93a4Safresh1{ 21256a93a4Safresh1 my $falsevar = !!0; 22256a93a4Safresh1 my $truevar = !!1; 23256a93a4Safresh1 24256a93a4Safresh1 ok(SvIsBOOL($falsevar), 'false var is boolean'); 25256a93a4Safresh1 ok(SvIsBOOL($truevar), 'true var is boolean'); 26256a93a4Safresh1 27256a93a4Safresh1 my $str = "$truevar"; 28256a93a4Safresh1 my $num = $truevar + 0; 29256a93a4Safresh1 30256a93a4Safresh1 ok(!SvIsBOOL($str), 'stringified true is not boolean'); 31256a93a4Safresh1 ok(!SvIsBOOL($num), 'numified true is not boolean'); 32256a93a4Safresh1 33256a93a4Safresh1 ok(SvIsBOOL($truevar), 'true var remains boolean after stringification and numification'); 34256a93a4Safresh1} 35256a93a4Safresh1 36256a93a4Safresh1# aggregate members 37256a93a4Safresh1{ 38256a93a4Safresh1 my %hash = ( false => !!0, true => !!1 ); 39256a93a4Safresh1 40256a93a4Safresh1 ok(SvIsBOOL($hash{false}), 'false HELEM is boolean'); 41256a93a4Safresh1 ok(SvIsBOOL($hash{true}), 'true HELEM is boolean'); 42256a93a4Safresh1 43256a93a4Safresh1 # We won't test AELEM but it's likely to be the same 44256a93a4Safresh1} 45256a93a4Safresh1 46*f2a19305Safresh1 47*f2a19305Safresh1is(test_bool_internals(), 0, "Bulk test internal bool related APIs"); 48*f2a19305Safresh1 49*f2a19305Safresh1 50256a93a4Safresh1done_testing; 51