File: meh-startstop-return.t

package info (click to toggle)
libpoe-perl 2%3A1.3670-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 1,996 kB
  • ctags: 1,416
  • sloc: perl: 22,865; makefile: 9
file content (61 lines) | stat: -rw-r--r-- 911 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env perl
# set ts=2 sw=2 expandtab filetype=perl

# Ensure that _start and _stop handlers return values as documented.

use warnings;
use strict;

use Test::More tests => 1;

sub POE::Kernel::ASSERT_DEFAULT () { 1 }
use POE;

my @results;

{
  package Fubar;

  use POE;

  sub new {
    my ($class) = @_;
    my $self = {};
    bless $self, $class;
    return $self;
  }

  sub createsession {
    my $self = shift;
    POE::Session->create(object_states => [$self => [qw( _start _stop )]]);
  }

  sub _start {
    return '_start';
  }

  sub _stop {
    return '_stop';
  }
}

POE::Session->create(
  inline_states => {
    _start => sub {
      Fubar->new()->createsession();
    },
    _child => sub {
      push @results, [ $_[ARG0], $_[ARG2] ];
    },
    _stop => sub { undef },
  }
);

$poe_kernel->run;

is_deeply(
  \@results, [
    [qw( create _start ) ],
    [qw( lose _stop ) ],
  ]
);