Acme-FSM

 view release on metacpan or  search on metacpan

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

      fturn  => [qw| st1da3 acd140 |] }        },
  [[qw| DONE |], { %common, action => q|DONE| }]                     ],
 [                              q|[U](noise/noise)|,
  [qw|                              pass eignore |],
  { BREAK =>
    { switch =>                       \&AFSMTS_U,
      uturn  => [qw| st3ff5 ac0872 |] }},
  [[qw| DONE |],    { %common, action => q|DONE| }]                  ],
 [                                               q|[_](noise/noise)|,
  [qw|                                               pass eignore |],
  { BREAK =>
    { switch => \&AFSMTS_T, turns => { 1 => [qw| st676c ac7080 |]}}},
  [[qw| DONE |],                     { %common, action => q|DONE| }] ],
 [                             q|[T]{workload}(BREAK/noise)|,
  [qw|                                               pass |],
  { workload  =>
    { switch => sub {            1 },
      eturn  => [qw| BREAK ace432 |],
      tturn  => [qw| BREAK ac3bca |] }                },
  [[[qw| ace432 |], { %common, action => q|ace432| }],
   [[qw| ac3bca |], { %common, action => q|ac3bca| }] ],             ],
 [                           q|[F]{workload}(BREAK/noise)|,
  [qw|                                     pass eignore |],
  { workload  =>
    { switch => sub { 0 }, fturn => [qw| BREAK acd140 |]}},
  [[qw| acd140 |],       { %common, action => q|acd140| }]           ],
 [                                q|[U]{workload}(BREAK/noise)|,
  [qw|                                          pass eignore |],
  { workload  =>
    { switch => sub { undef }, uturn  => [qw| BREAK ac0872 |]}},
  [[qw| ac0872 |],            { %common, action => q|ac0872| }]      ],
 [                                   q|[_]{workload}(BREAK/noise)|,
  [qw|                                             pass eignore |],
  { workload =>
    { switch => sub { 1 }, turns => { 1 => [qw| BREAK ac7080 |]}}},
  [[qw| ac7080 |],               { %common, action => q|ac7080| }]   ],
 [                    q|[T]{workload}(BREAK/undef)|,
  [qw|                                           |],
  { workload  =>
    { switch => sub {           1 },
      eturn  => [ q|BREAK|, undef ],
      tturn  => [ q|BREAK|, undef ] }             }, 
  [ qr.\Q{workload}(eturn): action !isa defined .,
    qr.\Q{workload}(tturn): action !isa defined . ],                 ],
 [                          q|[F]{workload}(BREAK/undef)|,
  [qw|                                         eignore |],
  { workload  =>
    { switch => sub { 0 }, fturn => [ q|BREAK|, undef ]}}, 
            qr.\Q{workload}(fturn): action !isa defined .            ],
 [                              q|[U]{workload}(BREAK/undef)|,
  [qw|                                             eignore |],
  { workload  =>
    { switch => sub { undef }, uturn => [ q|BREAK|, undef ]}}, 
                qr.\Q{workload}(uturn): action !isa defined .        ],
 [                                  q|[_]{workload}(BREAK/undef)|,
  [qw|                                                 eignore |],
  { workload  =>
    { switch => sub { 1 }, turns => { 1 => [ q|BREAK|, undef ]}}},
                   qr.\Q{workload}(turn%1): action !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]};
    if( grep q|pass| eq $_, @{$item->[1]} )             {
        my $res = grep( q|eignore| eq $_, @{$item->[1]} ) ?
                                    [ undef, $item->[3] ] : $item->[3];
        AFSMTS_wrap;
        AFSMTS_deeply @{$res->[0]}, qq|empty, $item->[0]|               unless
          grep $_ eq q|eignore|, @{$item->[1]};
        AFSMTS_wrap;
        AFSMTS_deeply @{$res->[1]}, qq|full, $item->[0]| }
    else                                                {
        my $res = ref $item->[3] eq q|ARRAY| ?
                                  $item->[3] : [ $item->[3], $item->[3] ];
        AFSMTS_wrap;
        is_deeply [ $@ =~ $res->[0], scalar @input ], [ !0, 1 ],
          AFSMTS_croakson qq|empty, $item->[0]|                         unless
          grep $_ eq q|eignore|, @{$item->[1]};
        AFSMTS_wrap;
        is_deeply [ $@ =~ $res->[1], scalar @input ], [ !0, 0 ],
          AFSMTS_croakson qq|full, $item->[0]|           }
    @input = @inbase        }

# vim: set filetype=perl



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