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