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 / complex_c3_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 => 12);
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 'c3';
56
57 package 텟Ṱ::ḅ; use mro 'c3';
58
59 package 텟Ṱ::ȼ; use mro 'c3';
60
61 package 텟Ṱ::Ḏ; use mro 'c3';
62 use base qw/텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ/;
63
64 package 텟Ṱ::Ӭ; use mro 'c3';
65 use base qw/텟Ṱ::Ḏ/;
66
67 package 텟Ṱ::Ḟ; use mro 'c3';
68 use base qw/텟Ṱ::Ӭ/;
69 sub testmèth { "wrong" }
70
71 package 텟Ṱ::ḡ; use mro 'c3';
72 use base qw/텟Ṱ::Ḏ/;
73
74 package 텟Ṱ::Ḣ; use mro 'c3';
75 use base qw/텟Ṱ::ḡ/;
76
77 package 텟Ṱ::ᶦ; use mro 'c3';
78 use base qw/텟Ṱ::Ḣ 텟Ṱ::Ḟ/;
79 sub testmèth { "right" }
80
81 package 텟Ṱ::J; use mro 'c3';
82 use base qw/텟Ṱ::Ḟ/;
83
84 package 텟Ṱ::Ḵ; use mro 'c3';
85 use base qw/텟Ṱ::J 텟Ṱ::ᶦ/;
86 sub testmèth { shift->next::method }
87}
88
89ok(eq_array(
90 mro::get_linear_isa('텟Ṱ::ᐊ'),
91 [ qw(텟Ṱ::ᐊ) ]
92), '... got the right C3 merge order for 텟Ṱ::ᐊ');
93
94ok(eq_array(
95 mro::get_linear_isa('텟Ṱ::ḅ'),
96 [ qw(텟Ṱ::ḅ) ]
97), '... got the right C3 merge order for 텟Ṱ::ḅ');
98
99ok(eq_array(
100 mro::get_linear_isa('텟Ṱ::ȼ'),
101 [ qw(텟Ṱ::ȼ) ]
102), '... got the right C3 merge order for 텟Ṱ::ȼ');
103
104ok(eq_array(
105 mro::get_linear_isa('텟Ṱ::Ḏ'),
106 [ qw(텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
107), '... got the right C3 merge order for 텟Ṱ::Ḏ');
108
109ok(eq_array(
110 mro::get_linear_isa('텟Ṱ::Ӭ'),
111 [ qw(텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
112), '... got the right C3 merge order for 텟Ṱ::Ӭ');
113
114ok(eq_array(
115 mro::get_linear_isa('텟Ṱ::Ḟ'),
116 [ qw(텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
117), '... got the right C3 merge order for 텟Ṱ::Ḟ');
118
119ok(eq_array(
120 mro::get_linear_isa('텟Ṱ::ḡ'),
121 [ qw(텟Ṱ::ḡ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
122), '... got the right C3 merge order for 텟Ṱ::ḡ');
123
124ok(eq_array(
125 mro::get_linear_isa('텟Ṱ::Ḣ'),
126 [ qw(텟Ṱ::Ḣ 텟Ṱ::ḡ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
127), '... got the right C3 merge order for 텟Ṱ::Ḣ');
128
129ok(eq_array(
130 mro::get_linear_isa('텟Ṱ::ᶦ'),
131 [ qw(텟Ṱ::ᶦ 텟Ṱ::Ḣ 텟Ṱ::ḡ 텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
132), '... got the right C3 merge order for 텟Ṱ::ᶦ');
133
134ok(eq_array(
135 mro::get_linear_isa('텟Ṱ::J'),
136 [ qw(텟Ṱ::J 텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
137), '... got the right C3 merge order for 텟Ṱ::J');
138
139ok(eq_array(
140 mro::get_linear_isa('텟Ṱ::Ḵ'),
141 [ qw(텟Ṱ::Ḵ 텟Ṱ::J 텟Ṱ::ᶦ 텟Ṱ::Ḣ 텟Ṱ::ḡ 텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
142), '... got the right C3 merge order for 텟Ṱ::Ḵ');
143
144is(텟Ṱ::Ḵ->testmèth(), "right", 'next::method working ok');