File Coverage

inc/lib/TestML/Boolean.pm
Criterion Covered Total %
statement 26 33 78.7
branch 2 14 14.2
condition n/a
subroutine 9 13 69.2
pod 0 5 0.0
total 37 65 56.9


line stmt bran cond sub pod time code
1             # Copied/modified from boolean.pm
2 2     2   13 use strict; use warnings;
  2     2   4  
  2         67  
  2         7  
  2         3  
  2         314  
3             package TestML::Boolean;
4             our $VERSION = '0.46';
5              
6             my ($true, $false);
7              
8             use overload
9 144     144   160 '""' => sub { ${$_[0]} },
  144         282  
10 0 0   0   0 '!' => sub { ${$_[0]} ? $false : $true },
  0         0  
11 2     2   14 fallback => 1;
  2         3  
  2         36  
12              
13 2     2   190 use base 'Exporter';
  2         2  
  2         559  
14             @TestML::Boolean::EXPORT = qw(true false isTrue isFalse isBoolean);
15              
16             my ($true_val, $false_val, $bool_vals);
17              
18             BEGIN {
19 2     2   7 my $t = 1;
20 2         2 my $f = 0;
21 2         3 $true = do {bless \$t, 'TestML::Boolean'};
  2         4  
22 2         10 $false = do {bless \$f, 'TestML::Boolean'};
  2         17  
23              
24 2         7 $true_val = overload::StrVal($true);
25 2         15 $false_val = overload::StrVal($false);
26 2         669 $bool_vals = {$true_val => 1, $false_val => 1};
27             }
28              
29             # refaddrs change on thread spawn, so CLONE fixes them up
30             sub CLONE {
31 0     0   0 $true_val = overload::StrVal($true);
32 0         0 $false_val = overload::StrVal($false);
33 0         0 $bool_vals = {$true_val => 1, $false_val => 1};
34             }
35              
36 10     10 0 63 sub true() { $true }
37 74     74 0 626 sub false() { $false }
38             sub isTrue($) {
39 0 0   0 0 0 not(defined $_[0]) ? false :
    0          
40             (overload::StrVal($_[0]) eq $true_val) ? true : false;
41             }
42             sub isFalse($) {
43 0 0   0 0 0 not(defined $_[0]) ? false :
    0          
44             (overload::StrVal($_[0]) eq $false_val) ? true : false;
45             }
46             sub isBoolean($) {
47             not(defined $_[0]) ? false :
48 72 50   72 0 218 (exists $bool_vals->{overload::StrVal($_[0])}) ? true : false;
    50          
49             }
50              
51             1;