File Coverage

blib/lib/Devel/Assert.pm
Criterion Covered Total %
statement 23 23 100.0
branch 12 12 100.0
condition n/a
subroutine 6 6 100.0
pod 0 1 0.0
total 41 42 97.6


line stmt bran cond sub pod time code
1             package Devel::Assert;
2 6     6   47673 use strict;
  6         9  
  6         771  
3              
4             our $VERSION = '1.00';
5              
6             our $__ASSERT_ON = 0;
7             our $__ASSERT_GLOBAL = 0;
8              
9             require XSLoader;
10             XSLoader::load('Devel::Assert', $VERSION);
11              
12             sub import {
13 13     13   920 my ($class, $arg) = @_;
14 13         26 my $caller = caller;
15              
16 13 100       147 $__ASSERT_ON = 0 unless $__ASSERT_GLOBAL;
17              
18 13 100       39 if ($arg eq 'global') {
    100          
19 2         4 $__ASSERT_ON = 1;
20 2         3 $__ASSERT_GLOBAL = 1;
21              
22             } elsif ($arg eq 'on') {
23 4         5 $__ASSERT_ON = 1;
24             }
25              
26             {
27 6     6   25 no strict 'refs';
  6         7  
  6         840  
  13         13  
28 13 100       14 *{"${caller}::assert"} = \&assert if !defined *{"${caller}::assert"}{CODE};
  10         2273  
  13         3783  
29             }
30             }
31              
32             sub unimport {
33 8 100   8   817 $__ASSERT_ON = 0 unless $__ASSERT_GLOBAL;
34             }
35              
36             INIT {
37 5     5   16 unimport(); #reset to default behaviour for runtime evals
38             }
39              
40             sub assert {
41 19 100   19 0 9194 unless ($_[0]) {
42 12         64 require Carp;
43 12         21 $Carp::Internal{'Devel::Assert'}++;
44 12         149 Carp::confess("Assertion failed");
45             }
46             }
47              
48             1;
49