make this a bit more extensible, for moose's benefit
[gitmo/Class-MOP.git] / t / 087_subclasses.t
CommitLineData
462ed2c0 1use strict;
2use warnings;
86a4d873 3use Test::More;
462ed2c0 4use Class::MOP;
5
6do {
7 package Grandparent;
8 use metaclass;
9
10 package Parent;
11 use metaclass;
12 use base 'Grandparent';
13
14 package Uncle;
15 use metaclass;
16 use base 'Grandparent';
17
18 package Son;
19 use metaclass;
20 use base 'Parent';
21
22 package Daughter;
23 use metaclass;
24 use base 'Parent';
25
26 package Cousin;
27 use metaclass;
28 use base 'Uncle';
29};
30
31is_deeply([sort Grandparent->meta->subclasses], ['Cousin', 'Daughter', 'Parent', 'Son', 'Uncle']);
32is_deeply([sort Parent->meta->subclasses], ['Daughter', 'Son']);
33is_deeply([sort Uncle->meta->subclasses], ['Cousin']);
34is_deeply([sort Son->meta->subclasses], []);
35is_deeply([sort Daughter->meta->subclasses], []);
36is_deeply([sort Cousin->meta->subclasses], []);
37
38is_deeply([sort Grandparent->meta->direct_subclasses], ['Parent', 'Uncle']);
39is_deeply([sort Parent->meta->direct_subclasses], ['Daughter', 'Son']);
40is_deeply([sort Uncle->meta->direct_subclasses], ['Cousin']);
41is_deeply([sort Son->meta->direct_subclasses], []);
42is_deeply([sort Daughter->meta->direct_subclasses], []);
43is_deeply([sort Cousin->meta->direct_subclasses], []);
44
86a4d873 45done_testing;