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