2 # Copyright (C) 2001-2005, The Perl Foundation.
7 use lib qw( . lib ../lib ../../lib );
9 use Parrot::Test tests => 9;
13 t/pmc/delegate.t - Method Delegation
17 % prove t/pmc/delegate.t
21 Tests method delegation.
25 # basic functionality - setting and getting types
27 pasm_output_is( <<'CODE', <<'OUTPUT', "delegate set_integer_native" );
31 .namespace ["delegate"]
32 .pcc_sub :vtable set_integer_native:
33 get_params "0,0", P2, I5
34 # need a private store to keep state - we dont have that yet
35 # for now check param passing
44 pasm_output_is( <<'CODE', <<'OUTPUT', "delegate get_integer" );
50 .namespace ["delegate"]
51 .pcc_sub :vtable get_integer:
60 pasm_output_is( <<'CODE', <<'OUTPUT', "delegate set_string_native" );
64 .namespace ["delegate"]
65 .pcc_sub :vtable set_string_native:
66 get_params "0,0", P2, S5
74 pasm_output_is( <<'CODE', <<'OUTPUT', "delegate get_string" );
80 .namespace ["delegate"]
81 .pcc_sub :vtable get_string:
90 pasm_output_is( <<'CODE', <<'OUTPUT', "delegate set_number_native" );
94 .namespace ["delegate"]
95 .pcc_sub :vtable set_number_native:
96 get_params "0,0", P2,N5
104 pasm_output_is( <<'CODE', <<'OUTPUT', "delegate get_number" );
110 .namespace ["delegate"]
111 .pcc_sub :vtable get_number:
120 pasm_output_is( <<'CODE', <<'OUTPUT', "delegate assign_pmc" );
126 .namespace ["delegate"]
127 .pcc_sub :vtable assign_pmc:
128 get_params "0,0", P2, P5
138 pir_output_is( <<'CODE', <<'OUTPUT', "delegate add_p_p_i" );
144 print P2 # yeah 1+1 = 3
148 .namespace ["delegate"]
149 .sub set_integer_native :vtable :method
156 .sub __add :multi(pmc, int)
173 pir_output_is( <<'CODE', <<'OUTPUT', "delegate add_p_p_p" );
182 print P2 # yeah 1+1 = 3
186 .namespace ["delegate"]
187 .sub set_integer_native :vtable :method
189 # cant keep state yet
190 # just print arg and return
194 .sub __add :multi(delegate, pmc)
208 .sub get_string :vtable :method
222 # cperl-indent-level: 4
225 # vim: expandtab shiftwidth=4: