File Coverage

blib/lib/RPerl/DataType/Integer.pm
Criterion Covered Total %
statement 42 84 50.0
branch 0 20 0.0
condition n/a
subroutine 14 21 66.6
pod 0 7 0.0
total 56 132 42.4


line stmt bran cond sub pod time code
1             # [[[ HEADER ]]]
2             package RPerl::DataType::Integer;
3 9     9   60 use strict;
  9         22  
  9         247  
4 9     9   55 use warnings;
  9         21  
  9         252  
5 9     9   54 use RPerl::AfterSubclass;
  9         19  
  9         1525  
6             our $VERSION = 0.009_000;
7              
8             # [[[ OO INHERITANCE ]]]
9 9     9   64 use parent qw(RPerl::DataType::Scalar);
  9         19  
  9         56  
10 9     9   543 use RPerl::DataType::Scalar;
  9         23  
  9         347  
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   53 use strict;
  9         22  
  9         215  
22 9     9   54 use warnings;
  9         24  
  9         315  
23 9     9   59 use parent qw(RPerl::DataType::Integer);
  9         22  
  9         41  
24              
25             package # hide from PAUSE indexing
26             constant_integer;
27 9     9   638 use strict;
  9         20  
  9         202  
28 9     9   51 use warnings;
  9         23  
  9         294  
29 9     9   54 use parent qw(RPerl::DataType::Integer);
  9         22  
  9         40  
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   770 use strict;
  9         23  
  9         209  
46 9     9   61 use warnings;
  9         28  
  9         308  
47              
48             # [[[ EXPORTS ]]]
49 9     9   62 use Exporter 'import';
  9         33  
  9         6321  
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   ( my $possible_integer ) = @_;
56 0 0         if ( not( defined $possible_integer ) ) {
57 0           croak("\nERROR EIV00, TYPE-CHECKING MISMATCH, PERLOPS_PERLTYPES:\ninteger value expected but undefined/null value found,\ncroaking");
58             }
59 0 0         if ( not( main::RPerl_SvIOKp($possible_integer) ) ) {
60 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 0     0 0   ( my $possible_integer, my $variable_name, my $subroutine_name ) = @_;
68 0 0         if ( not( defined $possible_integer ) ) {
69 0           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 0 0         if ( not( main::RPerl_SvIOKp($possible_integer) ) ) {
74 0           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   ( my integer $input_integer ) = @_;
84             # integer_CHECK($input_integer);
85 0           integer_CHECKTRACE( $input_integer, '$input_integer', 'integer_to_boolean()' );
86 0 0         if ( $input_integer == 0 ) { return 0; }
  0            
87 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   ( my integer $input_integer ) = @_;
94             # integer_CHECK($input_integer);
95 0           integer_CHECKTRACE( $input_integer, '$input_integer', 'integer_to_unsigned_integer()' );
96 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   ( my integer $input_integer ) = @_;
103             # integer_CHECK($input_integer);
104 0           integer_CHECKTRACE( $input_integer, '$input_integer', 'integer_to_number()' );
105 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   ( my integer $input_integer ) = @_;
112             # integer_CHECK($input_integer);
113 0           integer_CHECKTRACE( $input_integer, '$input_integer', 'integer_to_character()' );
114 0           my string $tmp_string = integer_to_string($input_integer);
115 0 0         if ( $tmp_string eq q{} ) { return q{}; }
  0            
116 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 0     0 0   ( my integer $input_integer ) = @_;
123             # integer_CHECK($input_integer);
124 0           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 0           my integer $is_negative = 0;
133 0 0         if ( $input_integer < 0 ) { $is_negative = 1; }
  0            
134 0           my string $retval = reverse "$input_integer";
135 0 0         if ($is_negative) { chop $retval; } # remove negative sign
  0            
136 0           $retval =~ s/(\d{3})/$1_/gxms;
137 0 0         if ( ( substr $retval, -1, 1 ) eq '_' ) { chop $retval; }
  0            
138 0           $retval = reverse $retval;
139              
140 0 0         if ($is_negative) { $retval = q{-} . $retval; }
  0            
141              
142             # RPerl::diag('in PERLOPS_PERLTYPES integer_to_string(), have $retval = ' . q{'} . $retval . q{'} . "\n");
143 0           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