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