#!/usr/bin/env perl
BEGIN {
$ENV
{RPERL_WARNINGS} = 0; }
our
$VERSION
= 0.003_000;
BEGIN {
if
(
$OSNAME
eq
'MSWin32'
) {
plan
skip_all
=>
"[[[ MS Windows OS Detected, GNU Multi-Precision Library Temporarily Disabled, Skipping GMP Type Tests, RPerl Type System ]]]"
;
}
}
BEGIN {
plan
tests
=> 75;
if
(
$ENV
{RPERL_VERBOSE} ) {
Test::More::diag(
"[[[ Beginning GMP Type Pre-Test Loading, RPerl Type System ]]]"
);
}
lives_and(
sub
{ use_ok(
'RPerl::AfterSubclass'
); },
q{use_ok('RPerl::AfterSubclass') lives}
);
lives_and(
sub
{ use_ok(
'rperlgmp'
); },
q{use_ok('rperlgmp') lives}
);
lives_and(
sub
{ use_ok(
'RPerl::DataType::GMPInteger_cpp'
); },
q{use_ok('RPerl::DataType::GMPInteger_cpp') lives}
);
}
my
integer
$number_of_tests_run
= 3;
sub
string_dumperify {
(
my
string
$input_string
) =
@_
;
$input_string
= Dumper( [
$input_string
] );
$input_string
=~ s/^\s+|\s+$//xmsg;
my
@input_string_split
=
split
"\n"
,
$input_string
;
$input_string
=
$input_string_split
[1];
return
$input_string
;
}
for
my
$mode_id
( 0, 2 ) {
my
scalartype_hashref
$mode
=
$RPerl::MODES
->{
$mode_id
};
my
string
$ops
=
$mode
->{ops};
my
string
$types
=
$mode
->{types};
my
string
$mode_tagline
=
$ops
.
'OPS_'
.
$types
.
'TYPES'
;
if
(
$ENV
{RPERL_VERBOSE} ) {
Test::More::diag(
'[[[ Beginning RPerl GMP Type Tests, '
.
$ops
.
' Operations & '
.
$types
.
' Data Types'
.
' ]]]'
);
}
lives_ok(
sub
{ rperltypes::types_enable(
$types
) },
q{mode '}
.
$ops
. ' Operations &
' . $types . '
Data Types
' . q{'
enabled} );
$number_of_tests_run
++;
if
(
$ops
eq
'CPP'
) {
delete
$main::
{
'RPerl__DataType__GMPInteger__MODE_ID'
};
my
$package
=
'RPerl::DataType::GMPInteger_cpp'
;
lives_and(
sub
{ require_ok(
$package
); },
'require_ok('
.
$package
.
') lives'
);
$number_of_tests_run
++;
lives_ok(
sub
{
eval
(
$package
.
'::cpp_load();'
) },
$package
.
'::cpp_load() lives'
);
$number_of_tests_run
++;
}
lives_ok(
sub
{ main->can(
'RPerl__DataType__GMPInteger__MODE_ID'
) },
'main::RPerl__DataType__GMPInteger__MODE_ID() exists'
);
$number_of_tests_run
++;
lives_and(
sub
{
is(
$RPerl::MODES
->{ main->can(
'RPerl__DataType__GMPInteger__MODE_ID'
)->() }->{types},
$types
,
'main::RPerl__DataType__GMPInteger__MODE_ID() types returns '
.
$types
);
},
'main::RPerl__DataType__GMPInteger__MODE_ID() lives'
);
$number_of_tests_run
++;
throws_ok(
sub
{ gmp_integer_to_boolean() },
"/(EMPV00.*$mode_tagline)|(Usage.*gmp_integer_to_boolean)/"
,
q{TGIV000 gmp_integer_to_boolean() throws correct exception}
);
throws_ok(
sub
{ gmp_integer_to_boolean(
undef
) },
"/(EMPV00.*$mode_tagline)/"
,
q{TGIV001 gmp_integer_to_boolean(undef) throws correct exception}
);
throws_ok(
sub
{ gmp_integer_to_boolean(0) },
"/(EMPV01.*$mode_tagline)/"
,
q{TGIV002 gmp_integer_to_boolean(0) throws correct exception}
);
throws_ok(
sub
{ gmp_integer_to_boolean(-23.42) },
"/(EMPV01.*$mode_tagline)/"
,
q{TGIV003 gmp_integer_to_boolean(-23.42) throws correct exception}
);
throws_ok(
sub
{ gmp_integer_to_boolean(
'howdy'
) },
"/(EMPV01.*$mode_tagline)/"
,
q{TGIV004 gmp_integer_to_boolean('howdy') throws correct exception}
);
throws_ok(
sub
{ gmp_integer_to_boolean([]) },
"/(EMPV01.*$mode_tagline)/"
,
q{TGIV005 gmp_integer_to_boolean([]) throws correct exception}
);
throws_ok(
sub
{ gmp_integer_to_boolean([21, 12, 23]) },
"/(EMPV01.*$mode_tagline)/"
,
q{TGIV006 gmp_integer_to_boolean([21, 12, 23]) throws correct exception}
);
throws_ok(
sub
{ gmp_integer_to_boolean({}) },
"/(EMPV02.*$mode_tagline)/"
,
q{TGIV007 gmp_integer_to_boolean({}
) throws correct exception}
);
throws_ok(
sub
{ gmp_integer_to_boolean({
carter
=>
'chris'
,
duchovny
=>
'david'
,
anderson
=>
'gillian'
}) },
"/(EMPV02.*$mode_tagline)/"
,
q{TGIV008 gmp_integer_to_boolean({carter => 'chris', duchovny => 'david', anderson => 'gillian'}
) throws correct exception}
);
throws_ok(
sub
{ gmp_integer_to_boolean(RPerl::Test::Foo->new()) },
"/(EMPV03.*$mode_tagline)/"
,
q{TGIV009 gmp_integer_to_boolean(RPerl::Test::Foo->new()) throws correct exception}
);
throws_ok(
sub
{ gmp_integer_to_boolean(Math::BigInt->new(0)) },
"/(EMPV04.*$mode_tagline)/"
,
q{TGIV010 gmp_integer_to_boolean(Math::BigInt->new()) throws correct exception}
);
throws_ok(
sub
{
my
gmp_integer
$gmp_integer_no_value
= gmp_integer->new();
delete
$gmp_integer_no_value
->{value};
gmp_integer_to_boolean(
$gmp_integer_no_value
);
},
"/(EMPV05.*$mode_tagline)/"
,
q{TGIV011 gmp_integer_to_boolean($gmp_integer_no_value) throws correct exception}
);
throws_ok(
sub
{
my
gmp_integer
$gmp_integer_undef_value
= gmp_integer->new();
$gmp_integer_undef_value
->{value} =
undef
;
gmp_integer_to_boolean(
$gmp_integer_undef_value
);
},
"/(EMPV07.*$mode_tagline)/"
,
q{TGIV012 gmp_integer_to_boolean($gmp_integer_undef_value) throws correct exception}
);
throws_ok(
sub
{
my
gmp_integer
$gmp_integer_nonobject_value
= gmp_integer->new();
$gmp_integer_nonobject_value
->{value} = 0;
gmp_integer_to_boolean(
$gmp_integer_nonobject_value
);
},
"/(EMPV08.*$mode_tagline)/"
,
q{TGIV013 gmp_integer_to_boolean($gmp_integer_nonobject_value->{value}
= 0) throws correct exception}
);
throws_ok(
sub
{
my
gmp_integer
$gmp_integer_nonobject_value
= gmp_integer->new();
$gmp_integer_nonobject_value
->{value} =
'the truth is out there'
;
gmp_integer_to_boolean(
$gmp_integer_nonobject_value
);
},
"/(EMPV08.*$mode_tagline)/"
,
q{TGIV014 gmp_integer_to_boolean($gmp_integer_nonobject_value->{value}
=
'the truth is out there'
) throws correct exception}
);
throws_ok(
sub
{
my
gmp_integer
$gmp_integer_nonobject_value
= gmp_integer->new();
$gmp_integer_nonobject_value
->{value} = [];
gmp_integer_to_boolean(
$gmp_integer_nonobject_value
);
},
"/(EMPV08.*$mode_tagline)/"
,
q{TGIV015 gmp_integer_to_boolean($gmp_integer_nonobject_value->{value}
= []) throws correct exception}
);
throws_ok(
sub
{
my
gmp_integer
$gmp_integer_nonobject_value
= gmp_integer->new();
$gmp_integer_nonobject_value
->{value} = {};
gmp_integer_to_boolean(
$gmp_integer_nonobject_value
);
},
"/(EMPV08.*$mode_tagline)/"
,
q{TGIV016 gmp_integer_to_boolean($gmp_integer_nonobject_value->{value}
= {}) throws correct exception}
);
throws_ok(
sub
{
my
gmp_integer
$gmp_integer_object_value
= gmp_integer->new();
$gmp_integer_object_value
->{value} = RPerl::Test::Foo->new();
gmp_integer_to_boolean(
$gmp_integer_object_value
);
},
"/(EMPV09.*$mode_tagline)/"
,
q{TGIV017 gmp_integer_to_boolean($gmp_integer_object_value) throws correct exception}
);
$number_of_tests_run
+= 18;
lives_and(
sub
{
my
gmp_integer
$tmp1
= gmp_integer->new();
gmp_set_signed_integer(
$tmp1
, 0);
is( gmp_integer_to_boolean(
$tmp1
), 0,
q{TGIV100 gmp_integer_to_boolean($tmp1==0) returns correct value}
);
},
q{TGIV100 gmp_integer_to_boolean($tmp1==0) lives}
);
lives_and(
sub
{
my
gmp_integer
$tmp1
= gmp_integer->new();
gmp_set_signed_integer(
$tmp1
, 1);
is( gmp_integer_to_boolean(
$tmp1
), 1,
q{TGIV101 gmp_integer_to_boolean($tmp1==1) returns correct value}
);
},
q{TGIV101 gmp_integer_to_boolean($tmp1==1) lives}
);
lives_and(
sub
{
my
gmp_integer
$tmp1
= gmp_integer->new();
gmp_set_signed_integer(
$tmp1
, -1);
is( gmp_integer_to_boolean(
$tmp1
), 1,
q{TGIV102 gmp_integer_to_boolean($tmp1==-1) returns correct value}
);
},
q{TGIV102 gmp_integer_to_boolean($tmp1==-1) lives}
);
lives_and(
sub
{
my
gmp_integer
$tmp1
= gmp_integer->new();
gmp_set_signed_integer(
$tmp1
, 1_234_567_890);
is( gmp_integer_to_boolean(
$tmp1
), 1,
q{TGIV103 gmp_integer_to_boolean($tmp1==1_234_567_890) returns correct value}
);
},
q{TGIV103 gmp_integer_to_boolean($tmp1==1_234_567_890) lives}
);
lives_and(
sub
{
my
gmp_integer
$tmp1
= gmp_integer->new();
gmp_set_signed_integer(
$tmp1
, -1_234_567_890);
is( gmp_integer_to_boolean(
$tmp1
), 1,
q{TGIV104 gmp_integer_to_boolean($tmp1==-1_234_567_890) returns correct value}
);
},
q{TGIV104 gmp_integer_to_boolean($tmp1==-1_234_567_890) lives}
);
$number_of_tests_run
+= 5;
lives_and(
sub
{
my
gmp_integer
$tmp1
= gmp_integer->new();
gmp_set_signed_integer(
$tmp1
, 0);
is( gmp_integer_to_unsigned_integer(
$tmp1
), 0,
q{TGIV200 gmp_integer_to_unsigned_integer($tmp1==0) returns correct value}
);
},
q{TGIV200 gmp_integer_to_unsigned_integer($tmp1==0) lives}
);
lives_and(
sub
{
my
gmp_integer
$tmp1
= gmp_integer->new();
gmp_set_signed_integer(
$tmp1
, 34_567_890);
is( gmp_integer_to_unsigned_integer(
$tmp1
), 34_567_890,
q{TGIV201 gmp_integer_to_unsigned_integer($tmp1==34_567_890) returns correct value}
);
},
q{TGIV201 gmp_integer_to_unsigned_integer($tmp1==34_567_890) lives}
);
lives_and(
sub
{
my
gmp_integer
$tmp1
= gmp_integer->new();
gmp_set_signed_integer(
$tmp1
, -34_567_890);
is( gmp_integer_to_unsigned_integer(
$tmp1
), 34_567_890,
q{TGIV202 gmp_integer_to_unsigned_integer($tmp1==-34_567_890) returns correct value}
);
},
q{TGIV202 gmp_integer_to_unsigned_integer($tmp1==-34_567_890) lives}
);
Hide Show 8 lines of Pod
$number_of_tests_run
+= 3;
lives_and(
sub
{
my
gmp_integer
$tmp1
= gmp_integer->new();
gmp_set_signed_integer(
$tmp1
, 0);
is( gmp_integer_to_integer(
$tmp1
), 0,
q{TGIV300 gmp_integer_to_integer($tmp1==0) returns correct value}
);
},
q{TGIV300 gmp_integer_to_integer($tmp1==0) lives}
);
lives_and(
sub
{
my
gmp_integer
$tmp1
= gmp_integer->new();
gmp_set_signed_integer(
$tmp1
, 34_567_890);
is( gmp_integer_to_integer(
$tmp1
), 34_567_890,
q{TGIV301 gmp_integer_to_integer($tmp1==34_567_890) returns correct value}
);
},
q{TGIV301 gmp_integer_to_integer($tmp1==34_567_890) lives}
);
lives_and(
sub
{
my
gmp_integer
$tmp1
= gmp_integer->new();
gmp_set_signed_integer(
$tmp1
, -34_567_890);
is( gmp_integer_to_integer(
$tmp1
), -34_567_890,
q{TGIV302 gmp_integer_to_integer($tmp1==-34_567_890) returns correct value}
);
},
q{TGIV302 gmp_integer_to_integer($tmp1==-34_567_890) lives}
);
$number_of_tests_run
+= 3;
Hide Show 103 lines of Pod
lives_and(
sub
{
is( gmp_integer_to_integer(integer_to_gmp_integer(34_567_890)), 34_567_890,
q{TGIV600 gmp_integer_to_integer(integer_to_gmp_integer(34_567_890)) returns correct value}
);
},
q{TGIV600 gmp_integer_to_integer(integer_to_gmp_integer(34_567_890)) lives}
);
lives_and(
sub
{
is( gmp_get_signed_integer(integer_to_gmp_integer(34_567_890)), 34_567_890,
q{TGIV601 gmp_get_signed_integer(integer_to_gmp_integer(34_567_890)) returns correct value}
);
},
q{TGIV601 gmp_get_signed_integer(integer_to_gmp_integer(34_567_890)) lives}
);
$number_of_tests_run
+= 2;
lives_and(
sub
{
is( gmp_integer_typetest0(), ( 3 +
$mode_id
),
q{TGIV700 gmp_integer_typetest0() returns correct value}
);
},
q{TGIV700 gmp_integer_typetest0() lives}
);
$number_of_tests_run
+= 1;
Hide Show 59 lines of Pod
}
done_testing(
$number_of_tests_run
);