2 # Copyright (C) 2007-2008, The Perl Foundation.
7 t/oo/isa.t - Test OO inheritance
15 Tests OO features related to the isa opcode, comparing for inheritance and
21 .include 'include/test_more.pir'
27 subclass_isa_by_string_name()
28 subclass_isa_by_class_object()
29 string_isa_and_pmc_isa_have_same_result()
33 .sub isa_by_string_name
37 is( 'Class', $S1, 'typeof newclass retval')
39 $I3 = isa $P1, "Class"
40 ok( $I3, 'isa newclass retval a Class')
44 is ( 'Foo', $S1, 'typeof instance of our class')
47 ok ( $I3, 'isa instance of our class')
49 $I3 = isa $P2, "Object"
50 ok ( $I3, 'isa instance of object')
53 .sub isa_by_class_object
55 foo_class = newclass "Foo2"
56 $S1 = typeof foo_class
58 is( 'Class', $S1, 'typeof newclass retval')
60 .local pmc class_class
61 class_class = get_class "Class"
62 $I3 = isa foo_class, class_class
63 ok ($I3, 'isa newclass retval a Class')
67 is ( 'Foo2', $S1, 'typeof new our class?')
69 $I3 = isa $P2, foo_class
70 ok ( $I3, 'isa instance of our class')
72 .local pmc object_class
73 object_class = get_class "Object"
74 $I3 = isa $P2, object_class
75 ok ( $I3, 'isa instance of Object')
78 .sub subclass_isa_by_string_name
79 .local pmc foo_class, bar_class
80 foo_class = newclass "Foo3"
81 bar_class = subclass "Foo3", "Bar3"
83 $I3 = isa bar_class, "Class"
84 ok ($I3, 'does subclass generate class objects')
88 is ('Bar3', $S1, 'does new give us an obj of our type')
91 ok ($I3, 'does new give us an obj that isa our type')
94 ok ($I3, 'does new give us an obj that isa our parent type')
96 $I3 = isa $P2, "Object"
97 ok ($I3, 'does new give us an obj that isa Object')
100 .sub subclass_isa_by_class_object
101 .local pmc foo_class, bar_class
102 foo_class = newclass "Foo4"
103 bar_class = subclass "Foo4", "Bar4"
105 .local pmc class_class
106 class_class = get_class "Class"
107 $I3 = isa bar_class, class_class
108 ok ($I3, 'is the class of a subclass Class')
112 is ('Bar4', $S1, 'typeof new class our class')
114 $I3 = isa $P2, bar_class
115 ok ($I3, 'new class isa our class')
117 $I3 = isa $P2, foo_class
118 ok ($I3, 'new class isa our parent class')
120 .local pmc object_class
121 object_class = get_class "Object"
122 $I3 = isa $P2, object_class
123 ok ($I3, 'new class isa Object')
127 .sub string_isa_and_pmc_isa_have_same_result
128 .local pmc class, obj
131 $I0 = isa obj, 'Object'
132 ok ($I0, 'isa Class instance an Object')
138 ok ($I1, 'isa String instance an Object')
145 # vim: expandtab shiftwidth=4 ft=pir: