#!/usr/bin/perl -w
use
5.004;
plan
tests
=> 132;
BEGIN { MyTestHelpers::nowarnings(); }
my
$path
= Math::PlanePath::KochelCurve->new;
{
my
$want_version
= 129;
ok (
$Math::PlanePath::KochelCurve::VERSION
,
$want_version
,
'VERSION variable'
);
ok (Math::PlanePath::KochelCurve->VERSION,
$want_version
,
'VERSION class method'
);
ok (
eval
{ Math::PlanePath::KochelCurve->VERSION(
$want_version
); 1 },
1,
"VERSION class check $want_version"
);
my
$check_version
=
$want_version
+ 1000;
ok (!
eval
{ Math::PlanePath::KochelCurve->VERSION(
$check_version
); 1 },
1,
"VERSION class check $check_version"
);
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"
);
}
{
ok (
$path
->n_start, 0,
'n_start()'
);
ok (
$path
->x_negative, 0,
'x_negative() instance method'
);
ok (
$path
->y_negative, 0,
'y_negative() instance method'
);
my
@pnames
=
map
{
$_
->{
'name'
}}
$path
->parameter_info_list;
ok (
join
(
','
,
@pnames
),
''
,
'parameter_info_list() keys'
);
}
{
my
$path
= Math::PlanePath::KochelCurve->new;
for
(1 .. 20) {
my
$bits
=
int
(
rand
(20));
my
$n
=
int
(
rand
(2*
*$bits
)) + 1;
my
(
$x1
,
$y1
) =
$path
->n_to_xy (
$n
);
my
(
$x2
,
$y2
) =
$path
->n_to_xy (
$n
+1);
foreach
my
$frac
(0.25, 0.5, 0.75) {
my
$want_xf
=
$x1
+ (
$x2
-
$x1
)
*$frac
;
my
$want_yf
=
$y1
+ (
$y2
-
$y1
)
*$frac
;
my
$nf
=
$n
+
$frac
;
my
(
$got_xf
,
$got_yf
) =
$path
->n_to_xy (
$nf
);
ok (
$got_xf
,
$want_xf
,
"n_to_xy($n) frac $frac, x"
);
ok (
$got_yf
,
$want_yf
,
"n_to_xy($n) frac $frac, y"
);
}
}
}
{
my
$path
= Math::PlanePath::KochelCurve->new;
my
(
$x
,
$y
) =
$path
->n_to_xy (0);
my
$bad
= 0;
my
$pow
= 5;
for
my
$n
(0 .. 4*
*$pow
+5) {
my
(
$x2
,
$y2
) =
$path
->n_to_xy (
$n
+1);
my
$frac
= 0.25;
my
$want_xf
=
$x
+ (
$x2
-
$x
)
*$frac
;
my
$want_yf
=
$y
+ (
$y2
-
$y
)
*$frac
;
my
$nf
=
$n
+
$frac
;
my
(
$got_xf
,
$got_yf
) =
$path
->n_to_xy (
$nf
);
if
(
$got_xf
!=
$want_xf
||
$got_yf
!=
$want_yf
) {
MyTestHelpers::diag (
"wrong at n=$n got $got_xf,$got_yf want $want_xf,$want_yf"
);
if
(
$bad
++ > 10) {
last
; }
}
(
$x
,
$y
) = (
$x2
,
$y2
);
}
ok (
$bad
, 0);
}
exit
0
;