File: averell-callback-ret.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 (44 lines) | stat: -rw-r--r-- 963 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
#!/usr/bin/perl -w
# vim: ts=2 sw=2 filetype=perl expandtab

# Callback must pass on it's return value as per documentation.

use strict;

use Test::More tests => 2;

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

BEGIN {
  package POE::Kernel;
  use constant TRACE_DEFAULT => exists($INC{'Devel/Cover.pm'});
}

BEGIN { use_ok("POE") } #1

BEGIN { $^W = 1 };

POE::Session->create(
  inline_states => {
    _start       => sub {
      $_[HEAP]->{callback} = $_[SESSION]->callback("callback_event");
      $_[KERNEL]->yield('try_callback');
    },
    try_callback => sub {
      my $callback = delete $_[HEAP]->{callback};
      my $retval = $callback->();
      if ($retval == 42) {
        pass("Callback returns correct value"); #2
      } else {
        diag("Callback returned $retval (should be 42)");
        fail("Callback returns correct value");
      }
    },
    callback_event => sub { return 42 },
    _stop => sub {},
  }
);

POE::Kernel->run();

exit;