File Coverage

lib/String/Numeric/PP.pm
Criterion Covered Total %
statement 47 47 100.0
branch 28 28 100.0
condition 40 42 95.2
subroutine 19 19 100.0
pod 0 14 0.0
total 134 150 89.3


line stmt bran cond sub pod time code
1             package String::Numeric::PP;
2 6     6   37 use strict;
  6         12  
  6         270  
3 6     6   29 use warnings;
  6         13  
  6         183  
4              
5 6     6   34 use Carp qw[croak];
  6         10  
  6         496  
6 6     6   13775 use String::Numeric::Regexp qw[:all];
  6         16  
  6         2462  
7              
8             BEGIN {
9 6     6   17 our $VERSION = '0.9_01';
10 6         23 our @EXPORT_OK = qw(
11             is_numeric
12             is_float
13             is_decimal
14             is_integer
15             is_int
16             is_int8
17             is_int16
18             is_int32
19             is_int64
20             is_int128
21             is_uint
22             is_uint8
23             is_uint16
24             is_uint32
25             is_uint64
26             is_uint128
27             );
28              
29 6         48 require Exporter;
30 6         6743 *import = \&Exporter::import;
31             }
32              
33             sub INT128_MIN () { '170141183460469231731687303715884105728' }
34             sub INT128_MAX () { '170141183460469231731687303715884105727' }
35             sub UINT128_MAX () { '340282366920938463463374607431768211455' }
36              
37             *is_numeric = \&is_float;
38             *is_integer = \&is_int;
39              
40             sub is_float {
41 154 100   154 0 113153 @_ == 1 || croak(q/Usage: is_float(string)/);
42 152   100     2321 return ( defined $_[0] && $_[0] =~ /\A$Float_re\z/o );
43             }
44              
45             sub is_decimal {
46 153 100   153 0 121315 @_ == 1 || croak(q/Usage: is_decimal(string)/);
47 152   100     2456 return ( defined $_[0] && $_[0] =~ /\A$Decimal_re\z/o );
48             }
49              
50             sub is_int {
51 29 100   29 0 23927 @_ == 1 || croak(q/Usage: is_int(string)/);
52 27   100     387 return ( defined $_[0] && $_[0] =~ /\A$Int_re\z/o );
53             }
54              
55             sub is_int8 {
56 29 100   29 0 13662 @_ == 1 || croak(q/Usage: is_int8(string)/);
57 28   100     371 return ( defined $_[0] && $_[0] =~ /\A$Int8_re\z/o );
58             }
59              
60             sub is_int16 {
61 29 100   29 0 14109 @_ == 1 || croak(q/Usage: is_int16(string)/);
62 28   100     457 return ( defined $_[0] && $_[0] =~ /\A$Int16_re\z/o );
63             }
64              
65             sub is_int32 {
66 29 100   29 0 14026 @_ == 1 || croak(q/Usage: is_int32(string)/);
67 28   100     523 return ( defined $_[0] && $_[0] =~ /\A$Int32_re\z/o );
68             }
69              
70             sub is_int64 {
71 29 100   29 0 29384 @_ == 1 || croak(q/Usage: is_int64(string)/);
72 28         61 local $_ = $_[0];
73 28   100     654 return ( defined $_[0] && $_[0] =~ /\A$Int64_re\z/o );
74             }
75              
76             sub is_int128 {
77 31 100   31 0 26645 @_ == 1 || croak(q/Usage: is_int128(string)/);
78 30         131 local $_ = $_[0];
79             return ( defined
80 30   66     377 && /\A(-?)(0|[1-9][0-9]{0,38})\z/
81             && ( length $2 < 39 || ( $1 ? $2 le INT128_MIN : $2 le INT128_MAX ) ) );
82             }
83              
84             sub is_uint {
85 28 100   28 0 21531 @_ == 1 || croak(q/Usage: is_uint(string)/);
86 27   100     275 return ( defined $_[0] && $_[0] =~ /\A$UInt_re\z/o );
87             }
88              
89             sub is_uint8 {
90 29 100   29 0 16126 @_ == 1 || croak(q/Usage: is_uint8(string)/);
91 28   100     623 return ( defined $_[0] && $_[0] =~ /\A$UInt8_re\z/o );
92             }
93              
94             sub is_uint16 {
95 29 100   29 0 13625 @_ == 1 || croak(q/Usage: is_uint16(string)/);
96 28   100     353 return ( defined $_[0] && $_[0] =~ /\A$UInt16_re\z/o );
97             }
98              
99             sub is_uint32 {
100 29 100   29 0 13598 @_ == 1 || croak(q/Usage: is_uint32(string)/);
101 28   100     381 return ( defined $_[0] && $_[0] =~ /\A$UInt32_re\z/o );
102             }
103              
104             sub is_uint64 {
105 29 100   29 0 14525 @_ == 1 || croak(q/Usage: is_uint64(string)/);
106 28   100     476 return ( defined $_[0] && $_[0] =~ /\A$UInt64_re\z/o );
107             }
108              
109             sub is_uint128 {
110 30 100   30 0 23221 @_ == 1 || croak(q/Usage: is_uint128(string)/);
111 29         56 local $_ = $_[0];
112             return ( defined
113 29   66     346 && /\A(0|[1-9][0-9]{0,38})\z/
114             && ( length $1 < 39 || $1 le UINT128_MAX ) );
115             }
116              
117             1;
118