#!/usr/bin/perl
use warnings;
use strict;
use lib './blib/lib';
use lib '../blib/lib';
use Test::More tests => 22;
use POE::Kernel;
use POE::Session::MessageBased;
POE::Session::MessageBased->create(
inline_states => {
_start => sub {
my ($message, @params) = @_;
ok($message->isa("POE::Session::Message"), "inline message is ok");
$message->kernel->yield( count => 2 );
},
count => sub {
my ($message, $count) = @_;
pass("inline got count $count");
if ($count < 10) {
$message->kernel->yield( count => ++$count );
}
},
_stop => sub {
pass("inline test stopped");
}
},
);
POE::Session::MessageBased->create(
object_states => [
main->new() => {
_start => "_poe_handle_start",
count => "_poe_handle_count",
_stop => "_poe_handle_stop",
}
],
);
POE::Kernel->run();
exit;
sub new { return bless {}, shift }
sub _poe_handle_start {
my ($self, $message, @params) = @_;
die unless ref($message->object) eq "main";
ok($message->isa("POE::Session::Message"), "object message is ok");
$message->kernel->yield( count => 13 );
}
sub _poe_handle_count {
my ($self, $message, $count) = @_;
die unless ref($message->object) eq "main";
pass("object counter $count");
if ($count < 21) {
$message->kernel->yield( count => ++$count );
}
}
sub _poe_handle_stop {
pass("object test stopped");
}