This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix NAME of perl5125delta.pod
[perl5.git] / t / mro / basic_05_dfs_utf8.t
1 #!./perl
2
3 use strict;
4 use warnings;
5
6 use utf8;
7 use open qw( :utf8 :std );
8
9 require q(./test.pl); plan(tests => 2);
10
11 =pod
12
13 This tests a strange bug found by Matt S. Trout 
14 while building DBIx::Class. Thanks Matt!!!! 
15
16    <A>
17   /   \
18 <C>   <B>
19   \   /
20    <D>
21
22 =cut
23
24 {
25     package Diᚪၚd_A;
26     use mro 'dfs'; 
27
28     sub ᕘ { 'Diᚪၚd_A::ᕘ' }
29 }
30 {
31     package Diᚪၚd_B;
32     use base 'Diᚪၚd_A';
33     use mro 'dfs';     
34
35     sub ᕘ { 'Diᚪၚd_B::ᕘ => ' . (shift)->SUPER::ᕘ }
36 }
37 {
38     package Diᚪၚd_C;
39     use mro 'dfs';    
40     use base 'Diᚪၚd_A';     
41
42 }
43 {
44     package Diᚪၚd_D;
45     use base ('Diᚪၚd_C', 'Diᚪၚd_B');
46     use mro 'dfs';    
47     
48     sub ᕘ { 'Diᚪၚd_D::ᕘ => ' . (shift)->SUPER::ᕘ }    
49 }
50
51 ok(eq_array(
52     mro::get_linear_isa('Diᚪၚd_D'),
53     [ qw(Diᚪၚd_D Diᚪၚd_C Diᚪၚd_A Diᚪၚd_B) ]
54 ), '... got the right MRO for Diᚪၚd_D');
55
56 is(Diᚪၚd_D->ᕘ, 
57    'Diᚪၚd_D::ᕘ => Diᚪၚd_A::ᕘ', 
58    '... got the right next::method dispatch path');