Acme-FSM

 view release on metacpan or  search on metacpan

t/state/workload.t  view on Meta::CPAN

    { switch => \&AFSMTS_F, fturn => [qw| MCXCIV MMMCDXXX |]}},
                     qr.\Q{MCXCIV}(MMMCDXXX): unknown action .         ],
 [                                       q|[U], (noise/noise)|,
  [qw|                                              eignore |],
  { workload  =>
    { switch => \&AFSMTS_U, uturn => [qw| DCCXLI MCDXLVII |]}},
                     qr.\Q{DCCXLI}(MCDXLVII): unknown action .         ],
 [                      q|[T], (noise/NEXT)|,
  [qw|                               push |],
  { workload  =>
    { switch =>          \&AFSMTS_T,
      eturn  => [qw| MDCXLV NEXT |],
      tturn  => [qw| MMCCXV NEXT |] }      },
  [ qr.\Q{MDCXLV}(): record !isa defined .,
    qr.\Q{MMCCXV}(): record !isa defined . ]                           ],
 [                                                q|[F], (noise/NEXT)|,
  [qw|                                                 push eignore |],
  { workload => { switch => \&AFSMTS_F, fturn => [qw| MMCCXV NEXT |]}},
                                qr.\Q{MMCCXV}(): record !isa defined . ],
 [                                                q|[U], (noise/NEXT)|,
  [qw|                                                 push eignore |],
  { workload => { switch => \&AFSMTS_U, uturn => [qw| DCCXLI NEXT |]}},
                                qr.\Q{DCCXLI}(): record !isa defined . ],
 [                      q|[T], trailing undef|,
  [qw|                                 push |],
  { workload  =>
    { switch =>                  \&AFSMTS_T,
      eturn  => [qw| MDCXLV NEXT |, undef ],
      tturn  => [qw| MMCCXV NEXT |, undef ] }},
  [ qr.\Q{MDCXLV}(): record !isa defined .,
    qr.\Q{MMCCXV}(): record !isa defined .   ]                         ],
 [                                          q|[F], trailing undef|,
  [qw|                                             push eignore |],
  { workload  =>
    { switch => \&AFSMTS_F, fturn => [qw| MMCCXV NEXT |, undef ]}},
                            qr.\Q{MMCCXV}(): record !isa defined .     ],
 [                                          q|[U], trailing undef|,
  [qw|                                             push eignore |],
  { workload  =>
    { switch => \&AFSMTS_U, uturn => [qw| DCCXLI NEXT |, undef ]}},
                            qr.\Q{DCCXLI}(): record !isa defined .     ],
 [                       q|[T], trailing noise|,
  [qw|                                  push |],
  { workload  =>
    { switch =>                   \&AFSMTS_T,
      eturn  => [qw| MDCXLV NEXT MDCLXVII |],
      tturn  => [qw| MMCCXV NEXT MMCCCXLV |] }},
  [ qr.\Q{MDCXLV}(): record !isa defined .,
    qr.\Q{MMCCXV}(): record !isa defined .    ]                        ],
 [                                           q|[F], trailing noise|,
  [qw|                                              push eignore |],
  { workload  =>
    { switch => \&AFSMTS_F, fturn => [qw| MCXCIV NEXT MMMCDXXX |]}},
                             qr.\Q{MCXCIV}(): record !isa defined .    ],
 [                                           q|[U], trailing noise|,
  [qw|                                              push eignore |],
  { workload  =>
    { switch => \&AFSMTS_U, uturn => [qw| DCCXLI NEXT MCDXLVII |]}},
                             qr.\Q{DCCXLI}(): record !isa defined .    ] );

plan tests => scalar map {
    ( '' ) x ( 2 - grep( q|eignore| eq $_, @{$_->[1]})) } @data;

foreach my $item ( @data ) {
    $st{$_} = $item->[2]{$_}                       foreach keys %{$item->[2]};
    my $res = ref $item->[3] eq q|ARRAY| ?
                              $item->[3] : [ $item->[3], $item->[3] ];
    toggle_now;
    AFSMTS_wrap;
    is_deeply [  $@ =~ $res->[0], scalar @input ],
    [ !0, 4 - grep $_ eq q|push|, @{$item->[1]} ],
      AFSMTS_croakson qq|empty, $item->[0]|                             unless
        grep $_ eq q|eignore|, @{$item->[1]};
    toggle_now;
    AFSMTS_wrap;
    is_deeply [  $@ =~ $res->[1], scalar @input ],
    [ !0, 4 - grep $_ eq q|push|, @{$item->[1]} ],
      AFSMTS_croakson qq|full, $item->[0]|;
    @input = @inbase        }

# vim: set filetype=perl



( run in 1.159 second using v1.01-cache-2.11-cpan-39bf76dae61 )