Acme-FSM

 view release on metacpan or  search on metacpan

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

# $Id: continue.t 564 2025-02-13 21:33:15Z whynot $
# Copyright 2013, 2022 Eric Pozharski <whynot@pozharski.name>
# Copyright 2025 Eric Pozharski <wayside.ultimate@tuta.io>
# GNU GPLv3
# AS-IS, NO-WARRANTY, HOPE-TO-BE-USEFUL

use strict;
use warnings;

package main;
use version 0.77; our $VERSION = version->declare( v2.3.5 );

use t::TestSuite qw| :switches :wraps :run :diag |;
use Test::More;

use Acme::FSM;

our( %st, $stderr, @inbase, @input );
our %opts = ( source => \&AFSMTS_shift, diag_level => -t STDOUT ? 10 : 1 );

sub toggle_now ( ) {
    @inbase = $inbase[0] ? ( undef ) x 5 : qw| mannaro | x 5;
    @input = ( )    }

my $method = q|process|;

sub combo_now ( ) { toggle_now; AFSMTS_wrap; AFSMTS_method_wrap $method }

my %common =
( state      =>       q|CONTINUE|,
  diag_level => $opts{diag_level},
  namespace  =>             undef,
  source     =>     $opts{source},
  dumper     =>             undef,
  queue      => [         undef ] );

my @data =
([               q|no (CONTINUE) record|,
  [qw|                                |],
  {                                    },
  qr.\Q{CONTINUE}{switch} !isa defined .                            ],
 [            q|empty (CONTINUE) record|,
  [qw|                                |],
  { CONTINUE => {                     }},
  qr.\Q{CONTINUE}{switch} !isa defined .                            ],
 [                                 q|[D]|,
  [qw|                                 |],
  { CONTINUE => { switch => \&AFSMTS_D }},
                          qr.^die switch.                           ],
 [                                     q|[T]|,
  [qw|                                     |],
  { CONTINUE => {     switch => \&AFSMTS_T }},
  qr.\Q{CONTINUE}(tturn): turn !isa defined .                       ],
 [                                     q|[F]|,
  [qw|                             eignore |],
  { CONTINUE => {     switch => \&AFSMTS_F }},
  qr.\Q{CONTINUE}(fturn): turn !isa defined .                       ],
 [                                     q|[U]|,
  [qw|                             eignore |],
  { CONTINUE => {     switch => \&AFSMTS_U }},
  qr.\Q{CONTINUE}(uturn): turn !isa defined .                       ],
 [                             q|[T], tturn !isa defined|,
  [qw|                                                 |],
  { CONTINUE => { switch => \&AFSMTS_T, tturn => undef }},
              qr.\Q{CONTINUE}(tturn): turn !isa defined .           ],
 [                             q|[F], fturn !isa defined|,
  [qw|                                         eignore |],
  { CONTINUE => { switch => \&AFSMTS_F, fturn => undef }},
              qr.\Q{CONTINUE}(fturn): turn !isa defined .           ],
 [                             q|[U], uturn !isa defined|,
  [qw|                                         eignore |],
  { CONTINUE => { switch => \&AFSMTS_U, uturn => undef }},
              qr.\Q{CONTINUE}(uturn): turn !isa defined .           ],
 [                                     q|[_], turns !isa defined|,
  [qw|                                                 eignore |],
  { CONTINUE => { switch => \&AFSMTS_T, turns => { 1 => undef }}},
                     qr.\Q{CONTINUE}(turn%1): turn !isa defined .   ],
 [                                q|[T], tturn isa scalar|,
  [qw|                                                  |],
  { CONTINUE => {  switch => \&AFSMTS_T, tturn => q|IC| }},
  qr.\Q{CONTINUE}(tturn): turn isa (), should be (ARRAY) .          ],
 [                                q|[F], fturn isa scalar|,
  [qw|                                          eignore |],
  { CONTINUE => {  switch => \&AFSMTS_F, fturn => q|SC| }},
  qr.\Q{CONTINUE}(fturn): turn isa (), should be (ARRAY) .          ],



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