This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
utf8.c: pod clarification
[perl5.git] / t / mro / basic_03_dfs_utf8.t
CommitLineData
204e6232
BF
1#!./perl
2
3use strict;
4use warnings;
5use utf8;
6use open qw( :utf8 :std );
7
8require q(./test.pl); plan(tests => 4);
9
10=pod
11
12This example is take from: http://www.python.org/2.3/mro.html
13
14"My second example"
15class O: pass
16class F(O): pass
17class E(O): pass
18class D(O): pass
19class C(D,F): pass
20class B(E,D): pass
21class A(B,C): pass
22
23 6
24 ---
25Level 3 | O |
26 / --- \
27 / | \
28 / | \
29 / | \
30 --- --- ---
31Level 2 2 | E | 4 | D | | F | 5
32 --- --- ---
33 \ / \ /
34 \ / \ /
35 \ / \ /
36 --- ---
37Level 1 1 | B | | C | 3
38 --- ---
39 \ /
40 \ /
41 ---
42Level 0 0 | A |
43 ---
44
45>>> A.mro()
46(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.E'>,
47<class '__main__.C'>, <class '__main__.D'>, <class '__main__.F'>,
48<type 'object'>)
49
50=cut
51
52{
53 package 텟ţ::ᴼ;
54 use mro 'dfs';
55
56 sub ᴼ_or_Ḋ { '텟ţ::ᴼ' }
57 sub ᴼ_or_Ḟ { '텟ţ::ᴼ' }
58
59 package 텟ţ::Ḟ;
60 use base '텟ţ::ᴼ';
61 use mro 'dfs';
62
63 sub ᴼ_or_Ḟ { '텟ţ::Ḟ' }
64
65 package 텟ţ::ऍ;
66 use base '텟ţ::ᴼ';
67 use mro 'dfs';
68
69 package 텟ţ::Ḋ;
70 use base '텟ţ::ᴼ';
71 use mro 'dfs';
72
73 sub ᴼ_or_Ḋ { '텟ţ::Ḋ' }
74 sub ƈ_or_Ḋ { '텟ţ::Ḋ' }
75
76 package 텟ţ::ƈ;
77 use base ('텟ţ::Ḋ', '텟ţ::Ḟ');
78 use mro 'dfs';
79
80 sub ƈ_or_Ḋ { '텟ţ::ƈ' }
81
82 package 텟ţ::ᛒ;
83 use base ('텟ţ::ऍ', '텟ţ::Ḋ');
84 use mro 'dfs';
85
86 package 텟ţ::ଅ;
87 use base ('텟ţ::ᛒ', '텟ţ::ƈ');
88 use mro 'dfs';
89}
90
91ok(eq_array(
92 mro::get_linear_isa('텟ţ::ଅ'),
93 [ qw(텟ţ::ଅ 텟ţ::ᛒ 텟ţ::ऍ 텟ţ::ᴼ 텟ţ::Ḋ 텟ţ::ƈ 텟ţ::Ḟ) ]
94), '... got the right MRO for 텟ţ::ଅ');
95
96is(텟ţ::ଅ->ᴼ_or_Ḋ, '텟ţ::ᴼ', '... got the right method dispatch');
97is(텟ţ::ଅ->ᴼ_or_Ḟ, '텟ţ::ᴼ', '... got the right method dispatch');
98
99# NOTE:
100# this test is particularly interesting because the p5 dispatch
101# would actually call 텟ţ::Ḋ before 텟ţ::ƈ and 텟ţ::Ḋ is a
102# subclass of 텟ţ::ƈ
103is(텟ţ::ଅ->ƈ_or_Ḋ, '텟ţ::Ḋ', '... got the right method dispatch');