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