File Coverage

blib/lib/RPerl/DataType/Integer.pm
Criterion Covered Total %
statement 62 84 73.8
branch 12 20 60.0
condition n/a
subroutine 16 21 76.1
pod 0 7 0.0
total 90 132 68.1


line stmt bran cond sub pod time code
1             # [[[ HEADER ]]]
2             package RPerl::DataType::Integer;
3 9     9   59 use strict;
  9         21  
  9         232  
4 9     9   43 use warnings;
  9         21  
  9         188  
5 9     9   42 use RPerl::AfterSubclass;
  9         20  
  9         1161  
6             our $VERSION = 0.009_000;
7              
8             # [[[ OO INHERITANCE ]]]
9 9     9   59 use parent qw(RPerl::DataType::Scalar);
  9         19  
  9         49  
10 9     9   474 use RPerl::DataType::Scalar;
  9         24  
  9         273  
11              
12             # [[[ CRITICS ]]]
13             ## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls) # USER DEFAULT 1: allow numeric values & print operator
14             ## no critic qw(RequireInterpolationOfMetachars) # USER DEFAULT 2: allow single-quoted control characters & sigils
15             ## no critic qw(Capitalization ProhibitMultiplePackages ProhibitReusedNames) # SYSTEM DEFAULT 3: allow multiple & lower case package names
16              
17             # [[[ SUB-TYPES ]]]
18             # an integer is a whole number, it has no floating-pointer (fractional/decimal) component
19             package # hide from PAUSE indexing
20             integer;
21 9     9   47 use strict;
  9         28  
  9         165  
22 9     9   69 use warnings;
  9         20  
  9         282  
23 9     9   48 use parent qw(RPerl::DataType::Integer);
  9         21  
  9         36  
24              
25             package # hide from PAUSE indexing
26             constant_integer;
27 9     9   544 use strict;
  9         25  
  9         166  
28 9     9   58 use warnings;
  9         18  
  9         255  
29 9     9   52 use parent qw(RPerl::DataType::Integer);
  9         18  
  9         39  
30              
31             # [[[ PRE-DECLARED TYPES ]]]
32             package # hide from PAUSE indexing
33             boolean;
34             package # hide from PAUSE indexing
35             unsigned_integer;
36             package # hide from PAUSE indexing
37             number;
38             package # hide from PAUSE indexing
39             character;
40             package # hide from PAUSE indexing
41             string;
42              
43             # [[[ SWITCH CONTEXT BACK TO PRIMARY PACKAGE ]]]
44             package RPerl::DataType::Integer;
45 9     9   691 use strict;
  9         20  
  9         181  
46 9     9   49 use warnings;
  9         18  
  9         272  
47              
48             # [[[ EXPORTS ]]]
49 9     9   50 use Exporter 'import';
  9         27  
  9         5863  
50             our @EXPORT = qw(integer_CHECK integer_CHECKTRACE integer_to_boolean integer_to_unsigned_integer integer_to_number integer_to_character integer_to_string);
51              
52             # [[[ TYPE-CHECKING ]]]
53             #our void $integer_CHECK = sub {
54             sub integer_CHECK {
55 0     0 0 0 ( my $possible_integer ) = @_;
56 0 0       0 if ( not( defined $possible_integer ) ) {
57 0         0 croak("\nERROR EIV00, TYPE-CHECKING MISMATCH, PERLOPS_PERLTYPES:\ninteger value expected but undefined/null value found,\ncroaking");
58             }
59 0 0       0 if ( not( main::RPerl_SvIOKp($possible_integer) ) ) {
60 0         0 croak("\nERROR EIV01, TYPE-CHECKING MISMATCH, PERLOPS_PERLTYPES:\ninteger value expected but non-integer value found,\ncroaking");
61             }
62             }
63              
64              
65             #our void $integer_CHECKTRACE = sub {
66             sub integer_CHECKTRACE {
67 81     81 0 169 ( my $possible_integer, my $variable_name, my $subroutine_name ) = @_;
68 81 100       231 if ( not( defined $possible_integer ) ) {
69 4         65 croak(
70             "\nERROR EIV00, TYPE-CHECKING MISMATCH, PERLOPS_PERLTYPES:\ninteger value expected but undefined/null value found,\nin variable $variable_name from subroutine $subroutine_name,\ncroaking"
71             );
72             }
73 77 100       331 if ( not( main::RPerl_SvIOKp($possible_integer) ) ) {
74 10         152 croak(
75             "\nERROR EIV01, TYPE-CHECKING MISMATCH, PERLOPS_PERLTYPES:\ninteger value expected but non-integer value found,\nin variable $variable_name from subroutine $subroutine_name,\ncroaking"
76             );
77             }
78             }
79              
80             # [[[ BOOLEANIFY ]]]
81             #our boolean $integer_to_boolean = sub {
82             sub integer_to_boolean {
83 0     0 0 0 ( my integer $input_integer ) = @_;
84             # integer_CHECK($input_integer);
85 0         0 integer_CHECKTRACE( $input_integer, '$input_integer', 'integer_to_boolean()' );
86 0 0       0 if ( $input_integer == 0 ) { return 0; }
  0         0  
87 0         0 else { return 1; }
88             }
89              
90             # [[[ UNSIGNED INTEGERIFY ]]]
91             #our unsigned_integer $integer_to_unsigned_integer = sub {
92             sub integer_to_unsigned_integer {
93 0     0 0 0 ( my integer $input_integer ) = @_;
94             # integer_CHECK($input_integer);
95 0         0 integer_CHECKTRACE( $input_integer, '$input_integer', 'integer_to_unsigned_integer()' );
96 0         0 return abs $input_integer;
97             }
98              
99             # [[[ NUMBERIFY ]]]
100             #our number $integer_to_number = sub {
101             sub integer_to_number {
102 0     0 0 0 ( my integer $input_integer ) = @_;
103             # integer_CHECK($input_integer);
104 0         0 integer_CHECKTRACE( $input_integer, '$input_integer', 'integer_to_number()' );
105 0         0 return $input_integer * 1.0;
106             }
107              
108             # [[[ CHARACTERIFY ]]]
109             #our character $integer_to_character = sub {
110             sub integer_to_character {
111 0     0 0 0 ( my integer $input_integer ) = @_;
112             # integer_CHECK($input_integer);
113 0         0 integer_CHECKTRACE( $input_integer, '$input_integer', 'integer_to_character()' );
114 0         0 my string $tmp_string = integer_to_string($input_integer);
115 0 0       0 if ( $tmp_string eq q{} ) { return q{}; }
  0         0  
116 0         0 else { return substr $tmp_string, 0, 1; }
117             }
118              
119             # [[[ STRINGIFY ]]]
120             #our string $integer_to_string = sub {
121             sub integer_to_string {
122 61     61 0 13402 ( my integer $input_integer ) = @_;
123             # integer_CHECK($input_integer);
124 61         146 integer_CHECKTRACE( $input_integer, '$input_integer', 'integer_to_string()' );
125              
126             # RPerl::diag("in PERLOPS_PERLTYPES integer_to_string(), received \$input_integer = $input_integer\n");
127             # RPerl::diag("in PERLOPS_PERLTYPES integer_to_string()...\n");
128              
129             # DEV NOTE: disable old stringify w/out underscores
130             # return "$input_integer";
131              
132 54         87 my integer $is_negative = 0;
133 54 100       125 if ( $input_integer < 0 ) { $is_negative = 1; }
  16         29  
134 54         103 my string $retval = reverse "$input_integer";
135 54 100       116 if ($is_negative) { chop $retval; } # remove negative sign
  16         28  
136 54         200 $retval =~ s/(\d{3})/$1_/gxms;
137 54 100       163 if ( ( substr $retval, -1, 1 ) eq '_' ) { chop $retval; }
  8         17  
138 54         99 $retval = reverse $retval;
139              
140 54 100       120 if ($is_negative) { $retval = q{-} . $retval; }
  16         34  
141              
142             # RPerl::diag('in PERLOPS_PERLTYPES integer_to_string(), have $retval = ' . q{'} . $retval . q{'} . "\n");
143 54         185 return $retval;
144             }
145              
146             # [[[ TYPE TESTING ]]]
147             our integer $integer__typetest0 = sub {
148             my integer $retval = ( 21 / 7 ) + main::RPerl__DataType__Integer__MODE_ID(); # return integer (not number) value, don't do (22 / 7) etc.
149              
150             # RPerl::diag("in PERLOPS_PERLTYPES integer__typetest0(), have \$retval = $retval\n");
151             return ($retval);
152             };
153             our integer $integer__typetest1 = sub {
154             ( my integer $lucky_integer ) = @_;
155             # integer_CHECK($lucky_integer);
156             integer_CHECKTRACE( $lucky_integer, '$lucky_integer', 'integer__typetest1()' );
157              
158             # RPerl::diag('in PERLOPS_PERLTYPES integer__typetest1(), received $lucky_integer = ' . integer_to_string($lucky_integer) . "\n");
159             return ( ( $lucky_integer * 2 ) + main::RPerl__DataType__Integer__MODE_ID() );
160             };
161              
162             1; # end of class