This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Encode to CPAN version 2.78
[perl5.git] / t / mro / dbic_c3_utf8.t
1 #!./perl
2
3 use strict;
4 use warnings;
5 use utf8;
6 use open qw( :utf8 :std );
7
8 require q(./test.pl); plan(tests => 1);
9
10 =pod
11
12 This example is taken from the inheritance graph of DBIx::Class::Core in DBIx::Class v0.07002:
13 (No ASCII art this time, this graph is insane)
14
15 The xx:: prefixes are just to be sure these bogus declarations never stomp on real ones
16
17 =cut
18
19 {
20     package Ẋẋ::ḐʙIX::Cl았::Coレ; use mro 'c3';
21     our @ISA = qw/
22       Ẋẋ::ḐʙIX::Cl았::ᓭᚱi알ḭźɜ::Sᑐ랍lえ
23       Ẋẋ::ḐʙIX::Cl았::Ĭⁿᰒ텣올움ᶮ
24       Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ
25       Ẋẋ::ḐʙIX::Cl았::ᛕķ::Ạuต
26       Ẋẋ::ḐʙIX::Cl았::ᛕķ
27       Ẋẋ::ḐʙIX::Cl았::ロẈ
28       Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy::탑lẹ
29       Ẋẋ::ḐʙIX::Cl았::ᚪc엤ȭઋᶢऋouꩇ
30     /;
31
32     package Ẋẋ::ḐʙIX::Cl았::Ĭⁿᰒ텣올움ᶮ; use mro 'c3';
33     our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았::ロẈ /;
34
35     package Ẋẋ::ḐʙIX::Cl았::ロẈ; use mro 'c3';
36     our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았 /;
37
38     package Ẋẋ::ḐʙIX::Cl았; use mro 'c3';
39     our @ISA = qw/
40       Ẋẋ::ḐʙIX::Cl았::촘폰en팃엗
41       xx::Cl았::닽Ӕ::앛쳇sᚖ
42     /;
43
44     package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ; use mro 'c3';
45     our @ISA = qw/
46       Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::헬pḜrS
47       Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::앛쳇sᚖ
48       Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::찻찯eᚪtЁnʂ
49       Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::Pr오xᐇMeᖪ옫ś
50       Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::밧え
51       Ẋẋ::ḐʙIX::Cl았
52     /;
53
54     package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::헬pḜrS; use mro 'c3';
55     our @ISA = qw/
56       Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᛗƳ
57       Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᶱn
58       Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::бl옹sTȭ
59       Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::ᛗᓆ톰ẰᚿẎ
60     /;
61
62     package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::Pr오xᐇMeᖪ옫ś; use mro 'c3';
63     our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았 /;
64
65     package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::밧え; use mro 'c3';
66     our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았 /;
67
68     package Ẋẋ::ḐʙIX::Cl았::ᛕķ::Ạuต; use mro 'c3';
69     our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았 /;
70
71     package Ẋẋ::ḐʙIX::Cl았::ᛕķ; use mro 'c3';
72     our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았::ロẈ /;
73
74     package Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy::탑lẹ; use mro 'c3';
75     our @ISA = qw/
76       Ẋẋ::ḐʙIX::Cl았::ᚪc엤ȭઋᶢऋouꩇ
77       Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy
78     /;
79
80     package Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy; use mro 'c3';
81     our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았 /;
82
83     package xx::Cl았::닽Ӕ::앛쳇sᚖ; our @ISA = (); use mro 'c3';
84     package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᛗƳ; our @ISA = (); use mro 'c3';
85     package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᶱn; our @ISA = (); use mro 'c3';
86     package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::бl옹sTȭ; our @ISA = (); use mro 'c3';
87     package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::ᛗᓆ톰ẰᚿẎ; our @ISA = (); use mro 'c3';
88     package Ẋẋ::ḐʙIX::Cl았::촘폰en팃엗; our @ISA = (); use mro 'c3';
89     package Ẋẋ::ḐʙIX::Cl았::ᚪc엤ȭઋᶢऋouꩇ; our @ISA = (); use mro 'c3';
90     package Ẋẋ::ḐʙIX::Cl았::ᓭᚱi알ḭźɜ::Sᑐ랍lえ; our @ISA = (); use mro 'c3';
91     package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::앛쳇sᚖ; our @ISA = (); use mro 'c3';
92     package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::찻찯eᚪtЁnʂ; our @ISA = (); use mro 'c3';
93 }
94
95 ok(eq_array(
96     mro::get_linear_isa('Ẋẋ::ḐʙIX::Cl았::Coレ'),
97     [qw/
98         Ẋẋ::ḐʙIX::Cl았::Coレ
99         Ẋẋ::ḐʙIX::Cl았::ᓭᚱi알ḭźɜ::Sᑐ랍lえ
100         Ẋẋ::ḐʙIX::Cl았::Ĭⁿᰒ텣올움ᶮ
101         Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ
102         Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::헬pḜrS
103         Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᛗƳ
104         Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᶱn
105         Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::бl옹sTȭ
106         Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::ᛗᓆ톰ẰᚿẎ
107         Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::앛쳇sᚖ
108         Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::찻찯eᚪtЁnʂ
109         Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::Pr오xᐇMeᖪ옫ś
110         Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::밧え
111         Ẋẋ::ḐʙIX::Cl았::ᛕķ::Ạuต
112         Ẋẋ::ḐʙIX::Cl았::ᛕķ
113         Ẋẋ::ḐʙIX::Cl았::ロẈ
114         Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy::탑lẹ
115         Ẋẋ::ḐʙIX::Cl았::ᚪc엤ȭઋᶢऋouꩇ
116         Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy
117         Ẋẋ::ḐʙIX::Cl았
118         Ẋẋ::ḐʙIX::Cl았::촘폰en팃엗
119         xx::Cl았::닽Ӕ::앛쳇sᚖ
120     /]
121 ), '... got the right C3 merge order for Ẋẋ::ḐʙIX::Cl았::Core');