xref: /openbsd-src/gnu/usr.bin/perl/ext/XS-APItest/t/boolean.t (revision f2a19305cfc49ea4d1a5feb55cd6c283c6f1e031)
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