1#!./perl
2
3use strict;
4use warnings;
5use utf8;
6use open qw( :utf8 :std );
7require q(./test.pl); plan(tests => 1);
8
9
10=pod
11
12=encoding UTF-8
13
14example taken from: L<http://www.opendylan.org/books/drm/Method_Dispatch>
15
16         ���������
17           ^
18           |
19        ������������������ 
20         ^    ^
21        /      \
22   S������en��    ���������
23      ^          ^
24      |          |
25 ������li�����  H����������
26       ^        ^
27        \      /
28         ���������
29
30 define class <S������en��> (<life-form>) end class;
31 define class <���������> (<life-form>) end class;
32 define class <������li�����> (<S������en��>) end class;
33 define class <H����������> (<���������>) end class;
34 define class <���������> (<������li�����>, <H����������>) end class;
35
36=cut
37
38{
39    package ���������;
40    use mro 'dfs';
41    
42    package ������������������;
43    use mro 'dfs';
44    use base '���������';
45    
46    package S������en��;
47    use mro 'dfs';
48    use base '������������������';
49    
50    package ���������;
51    use mro 'dfs';    
52    use base '������������������';
53    
54    package ������li�����;
55    use mro 'dfs';    
56    use base 'S������en��';
57    
58    package H����������;
59    use mro 'dfs';    
60    use base '���������';
61    
62    package ���������;
63    use mro 'dfs';    
64    use base ('������li�����', 'H����������');
65}
66
67ok(eq_array(
68    mro::get_linear_isa('���������'),
69    [ qw(��������� ������li����� S������en�� ������������������ ��������� H���������� ���������) ]
70), '... got the right MRO for the ��������� Dylan Example');  
71