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