6 use open qw( :utf8 :std );
8 require q(./test.pl); plan(tests => 12);
12 This example is taken from: http://rt.cpan.org/Public/Bug/Display.html?id=20879
15 Level 5 8 | A | 9 | B | A | C | (More General)
27 Level 3 4 | G | 6 | E | |
32 Level 2 3 | H | 5 | F | |
40 Level 1 1 | J | 2 | I | |
45 Level 0 0 | K | (More Specialized)
55 package 텟Ṱ::ᐊ; use mro 'c3';
57 package 텟Ṱ::ḅ; use mro 'c3';
59 package 텟Ṱ::ȼ; use mro 'c3';
61 package 텟Ṱ::Ḏ; use mro 'c3';
62 use base qw/텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ/;
64 package 텟Ṱ::Ӭ; use mro 'c3';
67 package 텟Ṱ::Ḟ; use mro 'c3';
69 sub testmèth { "wrong" }
71 package 텟Ṱ::ḡ; use mro 'c3';
74 package 텟Ṱ::Ḣ; use mro 'c3';
77 package 텟Ṱ::ᶦ; use mro 'c3';
78 use base qw/텟Ṱ::Ḣ 텟Ṱ::Ḟ/;
79 sub testmèth { "right" }
81 package 텟Ṱ::J; use mro 'c3';
84 package 텟Ṱ::Ḵ; use mro 'c3';
85 use base qw/텟Ṱ::J 텟Ṱ::ᶦ/;
86 sub testmèth { shift->next::method }
90 mro::get_linear_isa('텟Ṱ::ᐊ'),
92 ), '... got the right C3 merge order for 텟Ṱ::ᐊ');
95 mro::get_linear_isa('텟Ṱ::ḅ'),
97 ), '... got the right C3 merge order for 텟Ṱ::ḅ');
100 mro::get_linear_isa('텟Ṱ::ȼ'),
102 ), '... got the right C3 merge order for 텟Ṱ::ȼ');
105 mro::get_linear_isa('텟Ṱ::Ḏ'),
106 [ qw(텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
107 ), '... got the right C3 merge order for 텟Ṱ::Ḏ');
110 mro::get_linear_isa('텟Ṱ::Ӭ'),
111 [ qw(텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
112 ), '... got the right C3 merge order for 텟Ṱ::Ӭ');
115 mro::get_linear_isa('텟Ṱ::Ḟ'),
116 [ qw(텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
117 ), '... got the right C3 merge order for 텟Ṱ::Ḟ');
120 mro::get_linear_isa('텟Ṱ::ḡ'),
121 [ qw(텟Ṱ::ḡ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
122 ), '... got the right C3 merge order for 텟Ṱ::ḡ');
125 mro::get_linear_isa('텟Ṱ::Ḣ'),
126 [ qw(텟Ṱ::Ḣ 텟Ṱ::ḡ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
127 ), '... got the right C3 merge order for 텟Ṱ::Ḣ');
130 mro::get_linear_isa('텟Ṱ::ᶦ'),
131 [ qw(텟Ṱ::ᶦ 텟Ṱ::Ḣ 텟Ṱ::ḡ 텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
132 ), '... got the right C3 merge order for 텟Ṱ::ᶦ');
135 mro::get_linear_isa('텟Ṱ::J'),
136 [ qw(텟Ṱ::J 텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
137 ), '... got the right C3 merge order for 텟Ṱ::J');
140 mro::get_linear_isa('텟Ṱ::Ḵ'),
141 [ qw(텟Ṱ::Ḵ 텟Ṱ::J 텟Ṱ::ᶦ 텟Ṱ::Ḣ 텟Ṱ::ḡ 텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
142 ), '... got the right C3 merge order for 텟Ṱ::Ḵ');
144 is(텟Ṱ::Ḵ->testmèth(), "right", 'next::method working ok');