1#!./perl
2
3use strict;
4use warnings;
5use utf8;
6use open qw( :utf8 :std );
7
8require q(./test.pl); plan(tests => 11);
9
10=pod
11
12This example is taken from: http://rt.cpan.org/Public/Bug/Display.html?id=20879
13
14               ---     ---     ---
15Level 5     8 | A | 9 | B | A | C |    (More General)
16               ---     ---     ---       V
17                  \     |     /          |
18                   \    |    /           |
19                    \   |   /            |
20                     \  |  /             |
21                       ---               |
22Level 4             7 | D |              |
23                       ---               |
24                      /   \              |
25                     /     \             |
26                  ---       ---          |
27Level 3        4 | G |   6 | E |         |
28                  ---       ---          |
29                   |         |           |
30                   |         |           |
31                  ---       ---          |
32Level 2        3 | H |   5 | F |         |
33                  ---       ---          |
34                      \   /  |           |
35                       \ /   |           |
36                        \    |           |
37                       / \   |           |
38                      /   \  |           |
39                  ---       ---          |
40Level 1        1 | J |   2 | I |         |
41                  ---       ---          |
42                    \       /            |
43                     \     /             |
44                       ---               v
45Level 0             0 | K |            (More Specialized)
46                       ---
47
48
490123456789A
50KJIHGFEDABC
51
52=cut
53
54{
55    package ������::���; use mro 'dfs';
56
57    package ������::���; use mro 'dfs';
58
59    package ������::��; use mro 'dfs';
60
61    package ������::���; use mro 'dfs';
62    use base qw/������::��� ������::��� ������::��/;
63
64    package ������::��; use mro 'dfs';
65    use base qw/������::���/;
66
67    package ������::���; use mro 'dfs';
68    use base qw/������::��/;
69
70    package ������::���; use mro 'dfs';
71    use base qw/������::���/;
72
73    package ������::���; use mro 'dfs';
74    use base qw/������::���/;
75
76    package ������::���; use mro 'dfs';
77    use base qw/������::��� ������::���/;
78
79    package ������::���; use mro 'dfs';
80    use base qw/������::���/;
81
82    package ������::���; use mro 'dfs';
83    use base qw/������::��� ������::���/;
84}
85
86ok(eq_array(
87    mro::get_linear_isa('������::���'),
88    [ qw(������::���) ]
89), '... got the right DFS merge order for ������::���');
90
91ok(eq_array(
92    mro::get_linear_isa('������::���'),
93    [ qw(������::���) ]
94), '... got the right DFS merge order for ������::���');
95
96ok(eq_array(
97    mro::get_linear_isa('������::��'),
98    [ qw(������::��) ]
99), '... got the right DFS merge order for ������::��');
100
101ok(eq_array(
102    mro::get_linear_isa('������::���'),
103    [ qw(������::��� ������::��� ������::��� ������::��) ]
104), '... got the right DFS merge order for ������::���');
105
106ok(eq_array(
107    mro::get_linear_isa('������::��'),
108    [ qw(������::�� ������::��� ������::��� ������::��� ������::��) ]
109), '... got the right DFS merge order for ������::��');
110
111ok(eq_array(
112    mro::get_linear_isa('������::���'),
113    [ qw(������::��� ������::�� ������::��� ������::��� ������::��� ������::��) ]
114), '... got the right DFS merge order for ������::���');
115
116ok(eq_array(
117    mro::get_linear_isa('������::���'),
118    [ qw(������::��� ������::��� ������::��� ������::��� ������::��) ]
119), '... got the right DFS merge order for ������::���');
120
121ok(eq_array(
122    mro::get_linear_isa('������::���'),
123    [ qw(������::��� ������::��� ������::��� ������::��� ������::��� ������::��) ]
124), '... got the right DFS merge order for ������::���');
125
126ok(eq_array(
127    mro::get_linear_isa('������::���'),
128    [ qw(������::��� ������::��� ������::��� ������::��� ������::��� ������::��� ������::�� ������::��� ������::��) ]
129), '... got the right DFS merge order for ������::���');
130
131ok(eq_array(
132    mro::get_linear_isa('������::���'),
133    [ qw(������::��� ������::��� ������::�� ������::��� ������::��� ������::��� ������::��) ]
134), '... got the right DFS merge order for ������::���');
135
136ok(eq_array(
137    mro::get_linear_isa('������::���'),
138    [ qw(������::��� ������::��� ������::��� ������::�� ������::��� ������::��� ������::��� ������::�� ������::��� ������::��� ������::���) ]
139), '... got the right DFS merge order for ������::���');
140