Acme-FSM
view release on metacpan or search on metacpan
t/process/sort.t view on Meta::CPAN
tturn => [qw| Zaia SAME |],
fturn => [qw| STOP DONE |] },
Zaia =>
{ switch => sub {
my $self = shift @_;
$self->{mark} = $#input;
1, $self },
tturn => [qw| Riah_Sahiltaahk SAME |] },
Riah_Sahiltaahk =>
{ switch => sub {
my $self = shift @_;
$self->{mark} > $self->{base}, $self },
tturn => [qw| Do_The_Music SAME |],
fturn => [qw| De_Futura SAME |] },
Do_The_Music =>
{ switch => sub {
my $self = shift @_;
( $input[$self->{mark} - 1] cmp $input[$self->{mark}] ) > 0,
$self },
tturn => [qw| Ork_Alarm SAME |],
fturn => [qw| Maneh_Fur_Da_Zess SAME |] },
Ork_Alarm =>
{ switch => sub {
my $self = shift @_;
@input[$self->{mark} - 1, $self->{mark}] = @input[$self->{mark},
$self->{mark} - 1];
1, $self },
tturn => [qw| Maneh_Fur_Da_Zess SAME |] },
Maneh_Fur_Da_Zess =>
{ switch => sub {
my $self = shift @_;
$self->{mark}--;
print STDERR qq|@input\n|;
1, $self },
tturn => [qw| Riah_Sahiltaahk SAME |] },
De_Futura =>
{ switch => sub {
my $self = shift @_;
$self->{base}++;
1, $self },
tturn => [qw| Aina SAME |] } );
$super = [ ];
@inbase = ( [ @$super ] );
AFSMTS_wrap;
is_deeply \@input, $super, q|empty|;
$super = [qw| Meissa |];
@inbase = ([ @$super ]);
AFSMTS_wrap;
is_deeply \@input, $super, q|one item|;
$super = [qw| Keid Meissa |];
@inbase = ([ @$super ], [ reverse @$super ]);
while( @inbase ) {
AFSMTS_wrap;
is_deeply \@input, $super, q|two items| }
$super = [qw| Atik Keid Meissa |];
@inbase =
( map {; $_, do { my $rc = [ @$_ ]; push @$rc, shift @$rc; $rc }}
[ @$super ], [ reverse @$super ]);
while( @inbase ) {
AFSMTS_wrap;
is_deeply \@input, $super, q|three items| }
$super =
[qw| Algorab Ancha Atik Azha
Denebola Keid Meissa Rigil_Kentaurus
Scheat Skat |];
@inbase = ([ @$super ], [ reverse @$super ]);
for ( 2 .. @$super ) {
my $base = [ @{$inbase[0]} ];
push @$base, shift @$base;
unshift @inbase, $base, [ reverse @$base ] }
while( @inbase ) {
AFSMTS_wrap;
# XXX:202501120433:whynot: This is cranky.
my $backup = defined $inbase[0] ? [ $inbase[0] ] : [[ qw|***qG1k***| ]];
fail qq|@{$backup->[0]}| unless
AFSMTS_smartmatch @input, @$super }
pass q|success, you know|;
# vim: set filetype=perl
( run in 0.640 second using v1.01-cache-2.11-cpan-39bf76dae61 )