tagged release 0.6.4
[parrot.git] / t / pmc / scheduler.t
blob0d2154c7365b0d358956da9316f412951fa2a20b
1 #! perl
2 # Copyright (C) 2007, The Perl Foundation.
3 # $Id$
5 use strict;
6 use warnings;
7 use lib qw( . lib ../lib ../../lib );
8 use Test::More;
9 use Parrot::Test tests => 3;
11 =head1 NAME
13 t/pmc/scheduler.t - Concurrency Scheduler
15 =head1 SYNOPSIS
17     % prove t/pmc/scheduler.t
19 =head1 DESCRIPTION
21 Tests the concurrency scheduler PMC.
23 =cut
26 pir_output_is( <<'CODE', <<'OUT', "create a concurrency scheduler and set attributes" );
27   .sub main :main
28     $P0 = new "Scheduler"
29     $P1 = new "Task"
31     push $P0, $P1
33     $P2 = pop $P0
35     if null $P2 goto no_task
36       $P3 = getattribute $P2, 'status'
37       print $P3
38       print "\n"
39       goto got_task
41     no_task:
42       print "no task to retrieve\n"
44     got_task:
46     print 1
47     print "\n"
48     end
49   .end
50 CODE
51 created
53 OUT
55 pir_output_is( <<'CODE', <<'OUT', "create a concurrency scheduler with initializer" );
56   .sub main :main
57     .local pmc data
58     data       = new 'Hash'
60     .local pmc id
61     id         = new 'Integer'
62     id         = 128
63     data['id'] = id
65     $P0 = new 'Scheduler', data
66     $P1 = new 'Task'
68     push $P0, $P1
70     $P2 = pop $P0
72     if null $P2 goto no_task
73       $P3 = getattribute $P2, 'status'
74       say $P3
75       goto got_task
77     no_task:
78       say 'no task to retrieve'
80     got_task:
81     say 1
83     push_eh bad_initializer
84       $P0 = new 'Scheduler', id
85     pop_eh
87     say "No exception on invalid initializer?  Uh oh!"
88     end
90   bad_initializer:
91     say "Caught exception on bad initializer"
92     end
93   .end
94 CODE
95 created
97 Caught exception on bad initializer
98 OUT
100 pir_output_is( <<'CODE', <<'OUT', "add event handler and corresponding event to scheduler" );
101 .sub main :main
102     .local pmc handler, handler_init, handler_sub
103     .local pmc event, event_init
104     handler_init = new 'Hash'
105     handler_init['type'] = 'myevent'
106     handler_sub = get_global 'my_event_handler'
107     handler_init['code'] = handler_sub
108     handler = new 'EventHandler', handler_init
110     addhandler handler
112     event_init = new 'Hash'
113     event_init['type'] = 'event'
114     event_init['subtype'] = 'myevent'
115     event = new 'Task', event_init
117     schedule event
119 .end
121 .sub my_event_handler
122     .param pmc handler
123     .param pmc handledtask
124     print "called event handler\n"
125 .end
126 CODE
127 called event handler
130 # Local Variables:
131 #   mode: cperl
132 #   cperl-indent-level: 4
133 #   fill-column: 100
134 # End:
135 # vim: expandtab shiftwidth=4: