poe 1.289 and above have a broken as hell dual event queue system. skip event.t if...
[poe-api-peek:poe-api-peek.git] / t / 03-event.t
1
2 # Tests for event related code. See code block labeled "Event fun"
3 BEGIN {
4         use POE;
5         if($POE::VERSION >= '1.289') {
6                 eval "
7                         use Test::More skip_all => 'POE v1.289 and above have a dual event queue which breaks all outside access to the event queue';
8                 "
9         } else {
10                 eval "
11                         use Test::More tests => 12;
12                 "
13         }
14 }
15
16
17 use warnings;
18 use strict;
19 use POE;
20 use Data::Dumper;
21
22 use_ok('POE::API::Peek');
23
24 my $api = POE::API::Peek->new();
25
26 POE::Session->create(
27     inline_states => {
28         _start => \&_start,
29         _stop => \&_stop,
30         dummy => sub {},
31
32     },
33     heap => { api => $api },
34 );
35
36 POE::Kernel->run();
37
38 ###############################################
39
40 sub _start {
41     my $sess = $_[SESSION];
42     my $api = $_[HEAP]->{api};
43
44 # event_count_to {{{
45     my $to_count;
46     eval { $to_count = $api->event_count_to() };
47     ok(!$@, "event_count_to() causes no exceptions");
48     is($to_count, 0, 'event_count_to() returns proper count');
49 # }}}
50
51 # event_count_from {{{
52     my $from_count;
53     eval { $from_count = $api->event_count_from() };
54     ok(!$@, "event_count_from() causes no exceptions");
55     is($from_count, 0, 'event_count_from() returns proper count');
56 # }}}
57
58 # event_queue {{{
59     my $queue;
60     eval { $queue = $api->event_queue() };
61     ok(!$@, "event_queue() causes no exceptions");
62
63     # work around a bug in pre 0.04 releases of POE::XS::Queue::Array.
64     if( ($queue->isa('POE::Queue')) or ($queue->isa('POE::XS::Queue::Array')) ) {
65         pass('event_queue() returns POE::Queue object');
66     } else {
67         fail('event_queue() returns POE::Queue object');
68     }
69
70 # }}}
71
72 # event_queue_dump {{{
73         my $ver = $POE::VERSION;
74         $ver =~ s/_.+$//;
75     if($ver >= '0.31') {
76         $_[KERNEL]->yield('dummy');
77
78         my @queue;
79         eval { @queue = $api->event_queue_dump() };
80         ok(!$@, "event_queue_dump() causes no exceptions: $@");
81         is(scalar @queue, 1, "event_queue_dump() returns the right number of items");
82
83         my $item = $queue[0];
84         is($item->{type}, 'User', 'event_queue_dump() item has proper type');
85         is($item->{event}, 'dummy', 'event_queue_dump() item has proper event name');
86         is($item->{source}, $item->{destination}, 'event_queue_dump() item has proper source and destination');
87     } else {
88         my @queue;
89         eval { @queue = $api->event_queue_dump() };
90         ok(!$@, "event_queue_dump() causes no exceptions: $@");
91         is(scalar @queue, 1, "event_queue_dump() returns the right number of items");
92
93         my $item = $queue[0];
94         is($item->{type}, '_sigchld_poll', 'event_queue_dump() item has proper type');
95         is($item->{event}, '_sigchld_poll', 'event_queue_dump() item has proper event name');
96         is($item->{source}, $item->{destination}, 'event_queue_dump() item has proper source and destination');
97     }
98 # }}}
99     
100 }
101
102
103 sub _stop {
104
105
106 }