# # # vim: syntax=perl use warnings; use strict; use Test::More 'no_plan'; BEGIN { use_ok 'POE'; use_ok 'Sprocket'; } POE::Session->create( inline_states => { _start => sub { $poe_kernel->delay( shutdown => 5 => 1 ); $poe_kernel->alias_set( 'test' ); my $cb = $_[HEAP]->{cb} = []; # this callback will be called my $cbg = $_[HEAP]->{cbg} = $sprocket->callback_group( $sprocket->callback( $_[SESSION] => 'shutdown' ) ); opendir( DIR, "." ); my $files = [ grep { !m/\./ } readdir( DIR ) ]; # after all of these are all called $cbg->feed(sub { my $file = shift @$files or return; # ugh #push( @$cb, $cbg->callback( $_[SESSION] => test => 1 => $file => -s _ ) ); }); $poe_kernel->yield( 'do_callback' ); }, do_callback => sub { my $cb = shift @{$_[HEAP]->{cb}}; return $_[HEAP]->{cbg}->_done() unless $cb; $cb->( 2 ); $poe_kernel->yield( 'do_callback' ); }, test => sub { my ( $h, $one, $file, $size, $two ) = @_[ HEAP, ARG0, ARG1, ARG2, ARG3 ]; $h->{t}++; if ( $one == 1 && $two == 2 ) { Test::More::pass("callback params are ok for callback $h->{t}, file: $file size: $size") } else { Test::More::fail("callback params are wrong for callback $h->{t} file: $file size: $size"); } }, shutdown => sub { my $failed = $_[ ARG0 ]; Test::More::fail("test failed") if ( $failed ); $poe_kernel->alias_remove( 'test' ); $poe_kernel->alarm_remove_all(); delete $_[HEAP]->{cb}; delete $_[HEAP]->{cbg}; return; }, } ); $poe_kernel->run();