Ticket #230: class.patch

File class.patch, 1.5 KB (added by ronaldws, 6 years ago)
  • t/pmc/class.t

     
    1717=cut 
    1818 
    1919 
    20 .const int TESTS = 53 
     20.const int TESTS = 62  
    2121 
    2222 
    2323.sub 'main' :main 
     
    3535     'attributes'() 
    3636     'add_attribute'() 
    3737     'set_attr/get_attr'() 
    38 #     'add_method'() # TODO not yet implemented 
     38     'add_method'() 
    3939     'parents'() 
    4040     'roles'() 
    4141     'inspect'() 
     
    217217 
    218218 
    219219# L<PDD15/Class PMC API/=item add_method> 
    220 .sub 'add_method' # todo => 'not yet implemented' 
    221     .local pmc class, attribs, meth_to_add, test_attr_val 
     220.sub 'add_method' 
     221    .local pmc class, attribs, meth_to_add, test_attr_val, obj_inst 
    222222    .local int test_val 
    223223    class = new ['Class'] 
    224224 
     
    263263 
    264264    .local string test_string_val 
    265265 
     266    $I0 = 1 
     267    push_eh t_class_meth 
    266268    test_string_val = class.'foo'() 
     269    $I0 = 0 
     270    pop_eh 
     271 
    267272    is(test_string_val, 'bar', 'add_method() invoking method added to class works') 
     273t_class_meth: 
     274    todo(0, 'add_method() invoking method added to class works', "classes don't seem to call methods yet") 
    268275 
     276    obj_inst = class.'new'() 
     277    test_string_val = obj_inst.'foo'() 
     278    is(test_string_val, 'bar', 'add_method() invoking method added to class through instance works') 
     279 
     280 
    269281    $I0 = 1 
    270282    push_eh t_existing_method 
    271283    class.'add_method'( 'foo' ) 
     
    277289.end 
    278290 
    279291.sub 'foo' :method 
    280     .return ('foo') 
     292    .return ('bar') 
    281293.end 
    282294 
    283295