#!/usr/bin/perl -w
use
5.004;
plan
tests
=> 1568;
BEGIN { MyTestHelpers::nowarnings(); }
{
my
$want_version
= 129;
ok (
$Math::PlanePath::DiamondArms::VERSION
,
$want_version
,
'VERSION variable'
);
ok (Math::PlanePath::DiamondArms->VERSION,
$want_version
,
'VERSION class method'
);
ok (
eval
{ Math::PlanePath::DiamondArms->VERSION(
$want_version
); 1 },
1,
"VERSION class check $want_version"
);
my
$check_version
=
$want_version
+ 1000;
ok (!
eval
{ Math::PlanePath::DiamondArms->VERSION(
$check_version
); 1 },
1,
"VERSION class check $check_version"
);
my
$path
= Math::PlanePath::DiamondArms->new;
ok (
$path
->VERSION,
$want_version
,
'VERSION object method'
);
ok (
eval
{
$path
->VERSION(
$want_version
); 1 },
1,
"VERSION object check $want_version"
);
ok (!
eval
{
$path
->VERSION(
$check_version
); 1 },
1,
"VERSION object check $check_version"
);
}
{
my
$path
= Math::PlanePath::DiamondArms->new;
ok (
$path
->n_start, 1,
'n_start()'
);
ok (
$path
->x_negative, 1,
'x_negative()'
);
ok (
$path
->y_negative, 1,
'y_negative()'
);
ok (
$path
->arms_count, 4,
'arms_count()'
);
}
{
my
@pnames
=
map
{
$_
->{
'name'
}}
Math::PlanePath::DiamondArms->parameter_info_list;
ok (
join
(
','
,
@pnames
),
''
);
}
{
my
@data
= (
[ 1, 0,0 ],
[ 1.25, 0.25,-0.25 ],
[ 5, 1,-1 ],
[ 2, 1,0 ],
[ 2.25, 1.25,0.25 ],
[ 6, 2,1 ],
[ 3, 1,1 ],
[ 3.75, 0.25,1.75 ],
[ 7, 0,2 ],
[ 4, 0,1 ],
[ 4.75, -.75,0.25 ],
[ 8, -1,0 ],
);
my
$path
= Math::PlanePath::DiamondArms->new;
foreach
my
$elem
(
@data
) {
my
(
$n
,
$x
,
$y
) =
@$elem
;
{
my
(
$got_x
,
$got_y
) =
$path
->n_to_xy (
$n
);
if
(
$got_x
== 0) {
$got_x
= 0 }
if
(
$got_y
== 0) {
$got_y
= 0 }
ok (
$got_x
,
$x
,
"n_to_xy() x at n=$n"
);
ok (
$got_y
,
$y
,
"n_to_xy() y at n=$n"
);
}
if
(
$n
==
int
(
$n
)) {
my
$got_n
=
$path
->xy_to_n (
$x
,
$y
);
ok (
$got_n
,
$n
,
"xy_to_n() n at x=$x,y=$y"
);
}
{
$n
=
int
(
$n
);
my
(
$got_nlo
,
$got_nhi
) =
$path
->rect_to_n_range (0,0,
$x
,
$y
);
ok (
$got_nlo
<=
$n
, 1,
"rect_to_n_range() nlo=$got_nlo at n=$n,x=$x,y=$y"
);
ok (
$got_nhi
>=
$n
, 1,
"rect_to_n_range() nhi=$got_nhi at n=$n,x=$x,y=$y"
);
}
}
}
{
my
$path
= Math::PlanePath::DiamondArms->new;
for
(1 .. 500) {
my
$bits
=
int
(
rand
(25));
my
$n
=
int
(
rand
(2*
*$bits
)) + 1;
my
(
$x
,
$y
) =
$path
->n_to_xy (
$n
);
{
my
$rev_n
=
$path
->xy_to_n (
$x
,
$y
);
ok (
$rev_n
,
$n
,
"xy_to_n() reverse n=$n"
);
}
{
my
(
$n_lo
,
$n_hi
) =
$path
->rect_to_n_range (
$x
,
$y
,
$x
,
$y
);
ok (
$n_lo
<=
$n
, 1,
"rect_to_n_range() on $x,$y = $n n_lo $n_lo"
);
ok (
$n_hi
>=
$n
, 1,
"rect_to_n_range() on $x,$y = $n n_hi $n_hi"
);
}
}
}
exit
0;