Acme-FSM

 view release on metacpan or  search on metacpan

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

      eturn  => [qw| agate  Rilla |],
      tturn  => [qw| zircon Trigo |] }           },
  qr.\Q[verify]: {zircon}(): record !isa defined .                       ],
 [                                               q|[F](noise/noise)|,
  [qw|                                                    eignore |],
  { START => { switch => \&AFSMTS_F, fturn => [qw| jadeite Argo |]}},
                   qr.\Q[verify]: {jadeite}(): record !isa defined .     ],
 [                                                  q|[U](noise/noise)|,
  [qw|                                                       eignore |],
  { START => { switch => \&AFSMTS_U, uturn => [qw| turquoise Peric |]}},
                    qr.\Q[verify]: {turquoise}(): record !isa defined .  ],
 [                                              q|[_](noise/noise)|,
  [qw|                                                   eignore |],
  { START =>
    { switch => \&AFSMTS_T, turns => { 1 => [qw| garnet Janno |]}}},
                   qr.\Q[verify]: {garnet}(): record !isa defined .      ],
 [                                          q|[T], trailing undef|,
  [qw|                                                          |],
  { START =>  
    { switch => \&AFSMTS_T, tturn => [ q|zircon|, undef, undef ]}},
                            qr.\Q{zircon}(): record !isa defined .       ],
 [                                           q|[F], trailing undef|,
  [qw|                                                   eignore |],
  { START =>
    { switch => \&AFSMTS_F, fturn => [ q|jadeite|, undef, undef ]}},
                            qr.\Q{jadeite}(): record !isa defined .      ],
 [                                             q|[U], trailing undef|,
  [qw|                                                     eignore |],
  { START =>
    { switch => \&AFSMTS_U, uturn => [ q|turquoise|, undef, undef ]}},
                            qr.\Q{turquoise}(): record !isa defined .    ],
 [                              q|[_], trailing undef|,
  [qw|                                      eignore |],
  { START =>
    { switch =>                          \&AFSMTS_T,
      turns  => { 1 => [ q|garnet|, undef, undef ]} }},
                  qr.\Q{garnet}(): record !isa defined .                 ],
 [                                             q|[T], trailing noise|,
  [qw|                                                             |],
  { START =>
    { switch => \&AFSMTS_T, tturn => [ q|zircon|, undef, q|Rilla| ]}},
                               qr.\Q{zircon}(): record !isa defined .    ],
 [                                              q|[F], trailing noise|,
  [qw|                                                      eignore |],
  { START =>
    { switch => \&AFSMTS_F, fturn => [ q|jadeite|, undef, q|Rilla| ]}},
                               qr.\Q{jadeite}(): record !isa defined .   ],
 [                                                q|[U], trailing noise|,
  [qw|                                                        eignore |],
  { START =>
    { switch => \&AFSMTS_U, uturn => [ q|truquoise|, undef, q|Rilla| ]}},
                               qr.\Q{truquoise}(): record !isa defined . ],
 [                                 q|[_], trailing noise|,
  [qw|                                         eignore |],
  { START =>
    { switch =>                             \&AFSMTS_T,
      turns  => { 1 => [ q|garnet|, undef, q|Rilla| ]} }},
                   qr.\Q{garnet}(): record !isa defined .                ] );

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

foreach my $item ( @data ) {
    %st = %{$item->[2]};
    if( grep q|todo| eq $_, @{$item->[1]} )                       {
        local $TODO = q|should detect|;
        toggle_now;
        AFSMTS_wrap;
        unlike $@, qr<^ALRM>, AFSMTS_croakson qq|empty, $item->[0]|     unless
          grep $_ eq q|eignore|, @{$item->[1]};
        toggle_now;
        AFSMTS_wrap;
        unlike $@, qr<^ALRM>, AFSMTS_croakson qq|full, $item->[0]| }
    else                                                          {
        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, scalar( grep q|void| eq $_, @{$item->[1]} ) ? 0 : 4 ],
          AFSMTS_croakson qq|empty, $item->[0]|                         unless
            grep $_ eq q|eignore|, @{$item->[1]};
        toggle_now;
        AFSMTS_wrap;
        is_deeply [                $@ =~ $res->[1], scalar @input ],
        [ !0, scalar( grep q|void| eq $_, @{$item->[1]} ) ? 0 : 4 ],
          AFSMTS_croakson qq|full, $item->[0]|                     }
    @input = @inbase        }

# vim: set filetype=perl



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