Acme-FSM
view release on metacpan or search on metacpan
t/process/quadratic.t view on Meta::CPAN
{ switch => sub {
my $self = shift @_;
$self->{root} = [ -$self->{coeff2} / $self->{coeff1} ];
return !0 },
tturn => [qw| STOP one |] },
st3ac5 =>
{ switch => sub {
my $self = shift @_;
$self->{accum} = '-';
return defined $self->{coeff0} },
tturn => [qw| st4d71 NEXT |],
fturn => [qw| st6936 NEXT |] } );
@inbase =
([ '', q|fail|, q|no coeff0|, undef, undef, undef, undef, undef ],
[ q|t|, q|fail|, q|t|, undef, undef, undef, undef, undef ],
[ q| p|, q|fail|, q|p|, undef, undef, undef, undef, undef ],
[ q|4|, q|fail|, q|no coeff0|, undef, undef, undef, undef, undef ],
[ q|9u|, q|fail|, q|u|, undef, undef, undef, undef, undef ],
[ q|5 |, q|fail|, q|no coeff1|, 5, undef, undef, undef, undef ],
[ q|52 |, q|fail|, q|no coeff1|, 52, undef, undef, undef, undef ],
[ q|-|, q|fail|, q|no coeff0|, undef, undef, undef, undef, undef ],
[ q|- |, q|fail|, q|no coeff0|, undef, undef, undef, undef, undef ],
[ q|-99 |, q|fail|, q|no coeff1|, -99, undef, undef, undef, undef ],
[ q|2-6 |, q|fail|, q|-|, undef, undef, undef, undef, undef ],
[ q|55- |, q|fail|, q|-|, undef, undef, undef, undef, undef ],
[ q|23 1|, q|fail|, q|no coeff1|, 23, undef, undef, undef, undef ],
[ q|11 q|, q|fail|, q|q|, 11, undef, undef, undef, undef ],
[ q|32 0a|, q|fail|, q|a|, 32, undef, undef, undef, undef ],
[ q|58 5 |, q|fail|, q|no coeff2|, 58, 5, undef, undef, undef ],
[ q|99 31 |, q|fail|, q|no coeff2|, 99, 31, undef, undef, undef ],
[ q|58 -|, q|fail|, q|no coeff1|, 58, undef, undef, undef, undef ],
[ q|31 - |, q|fail|, q|no coeff1|, 31, '-', undef, undef, undef ],
[ q|94 -40|, q|fail|, q|no coeff1|, 94, undef, undef, undef, undef ],
[ q|98 -51 |, q|fail|, q|no coeff2|, 98, -51, undef, undef, undef ],
[ q|71 4-1 |, q|fail|, q|-|, 71, undef, undef, undef, undef ],
[ q|99 13- |, q|fail|, q|-|, 99, undef, undef, undef, undef ],
[ q|92 70 3|, q|fail|, q|no coeff2|, 92, 70, undef, undef, undef ],
[ q|87 7 h |, q|fail|, q|h|, 87, 7, undef, undef, undef ],
[ q|77 68 2m|, q|fail|, q|m|, 77, 68, undef, undef, undef ],
[ q|45 3 -82|, q|fail|, q|no coeff2|, 45, 3, undef, undef, undef ],
[ q|43 51 1-6 |, q|fail|, q|-|, 43, 51, undef, undef, undef ],
[ q|17 10 0- |, q|fail|, q|-|, 17, 10, undef, undef, undef ],
[ q|0 0 0 |, q|any|, '', 0, 0, 0, undef, undef ],
[ q|0 0 93 |, q|none|, '', 0, 0, 93, undef, undef ],
[ q|0 32 40 |, q|one|, '', 0, 32, 40, -1.25, undef ],
[ q|0 37 0 |, q|one|, '', 0, 37, 0, 0, undef ],
[ q|22 0 0 |, q|one|, '', 22, 0, 0, 0, undef ],
[ q|67 0 63 |, q|fail|, q|no root|, 67, 0, 63, undef, undef ],
[ q|37 0 -82 |, q|two|, '', 37, 0, -82, -1.48870, 1.48870 ],
[ q|45 95 1 |, q|two|, '', 45, 95, 1, -2.10053, -0.01058 ],
[ q|95 89 75 1|, q|fail|, q|1|, 95, 89, 75, undef, undef ],
[ q|6 69 17 -|, q|fail|, q|-|, 6, 69, 17, undef, undef ],
[ q|64 92 77 v|, q|fail|, q|v|, 64, 92, 77, undef, undef ],
[ q| -13 21 38 |, q|two|, '', -13, 21, 38, 2.69858, -1.08319 ],
[ q| -24 81 84 |, q|two|, '', -24, 81, 84, 4.20696, -0.83196 ] );
plan tests => scalar @inbase;
while( my $input = shift @inbase ) {
@input = split m{}, $input->[0];
AFSMTS_wrap;
is_deeply
[ $rc->[0], @$bb{qw| fail coeff0 coeff1 coeff2 |},
(defined $input->[6] ?
abs( $input->[6] - $bb->{root}[0] ) < 0.00001 : undef) ],
[ @$input[ 1 .. 5 ], (defined $input->[6] ? !0 : undef) ],
sprintf q|(%s) (%s) (%s:%s) (%s:%s)|,
$input->[0] // q|(undef)|, $bb->{fail} // q||,
$bb->{root}[0] // q|(undef)|, $bb->{root}[1] // q|(undef)|,
$input->[6] // q|(undef)|, $input->[7] // q|(undef)| }
# vim: set filetype=perl
( run in 2.372 seconds using v1.01-cache-2.11-cpan-71847e10f99 )