1#!./perl
2
3use strict;
4use warnings;
5use utf8;
6use open qw( :utf8 :std );
7
8require q(./test.pl); plan(tests => 1);
9
10=pod
11
12=encoding UTF-8
13
14This example is taken from the inheritance graph of DBIx::Class::Coin DBIx::Class v0.07002:
15(No ASCII art this time, this graph is insane)
16
17The xx:: prefixes are just to be sure these bogus declarations never stomp on real ones
18
19=cut
20
21{
22    package Ẋẋ::ḐʙIX::Cl았::Coレ; use mro 'dfs';
23    our @ISA = qw/
24      Ẋẋ::ḐʙIX::Cl았::ᓭᚱi알ḭźɜ::Sᑐ랍l25      Ẋẋ::ḐʙIX::Cl았::Ĭⁿᰒ텣올움ᶮ
26      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ
27      Ẋẋ::ḐʙIX::Cl았::ᛕķ::Ạu28      Ẋẋ::ḐʙIX::Cl았::ᛕķ
29      Ẋẋ::ḐʙIX::Cl았::ロẈ
30      Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy::탑l31      Ẋẋ::ḐʙIX::Cl았::ᚪc엤ȭઋᶢऋou32    /;
33
34    package Ẋẋ::ḐʙIX::Cl았::Ĭⁿᰒ텣올움ᶮ; use mro 'dfs';
35    our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았::ロẈ /;
36
37    package Ẋẋ::ḐʙIX::Cl았::ロẈ; use mro 'dfs';
38    our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았 /;
39
40    package Ẋẋ::ḐʙIX::Cl았; use mro 'dfs';
41    our @ISA = qw/
42      Ẋẋ::ḐʙIX::Cl았::촘폰en팃엗
43      xx::Cl았::닽Ӕ::앛쳇s44    /;
45
46    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ; use mro 'dfs';
47    our @ISA = qw/
48      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::헬pr49      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::앛쳇s50      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::찻찯etЁnʂ
51      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::PrxMeᖪ옫ś
52      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::밧え
53      Ẋẋ::ḐʙIX::Cl54    /;
55
56    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::헬prS; use mro 'dfs';
57    our @ISA = qw/
58      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᛗƳ
59      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᶱn
60      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::бlsTȭ
61      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::ᛗᓆ톰ẰᚿẎ
62    /;
63
64    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::PrxMeᖪ옫ś; use mro 'dfs';
65    our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았 /;
66
67    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::밧え; use mro 'dfs';
68    our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았 /;
69
70    package Ẋẋ::ḐʙIX::Cl았::ᛕķ::Ạuต; use mro 'dfs';
71    our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았 /;
72
73    package Ẋẋ::ḐʙIX::Cl았::ᛕķ; use mro 'dfs';
74    our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았::ロẈ /;
75
76    package Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy::탑lẹ; use mro 'dfs';
77    our @ISA = qw/
78      Ẋẋ::ḐʙIX::Cl았::ᚪc엤ȭઋᶢऋou79      Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy
80    /;
81
82    package Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy; use mro 'dfs';
83    our @ISA = qw/ Ẋẋ::ḐʙIX::Cl았 /;
84
85    package xx::Cl았::닽Ӕ::앛쳇sᚖ; our @ISA = (); use mro 'dfs';
86    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᛗƳ; our @ISA = (); use mro 'dfs';
87    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᶱn; our @ISA = (); use mro 'dfs';
88    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::бlsTȭ; our @ISA = (); use mro 'dfs';
89    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::ᛗᓆ톰ẰᚿẎ; our @ISA = (); use mro 'dfs';
90    package Ẋẋ::ḐʙIX::Cl았::촘폰en팃엗; our @ISA = (); use mro 'dfs';
91    package Ẋẋ::ḐʙIX::Cl았::ᚪc엤ȭઋᶢऋouꩇ; our @ISA = (); use mro 'dfs';
92    package Ẋẋ::ḐʙIX::Cl았::ᓭᚱi알ḭźɜ::Sᑐ랍lえ; our @ISA = (); use mro 'dfs';
93    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::앛쳇sᚖ; our @ISA = (); use mro 'dfs';
94    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::찻찯etЁnʂ; our @ISA = (); use mro 'dfs';
95}
96
97ok(eq_array(
98    mro::get_linear_isa('Ẋẋ::ḐʙIX::Cl았::Coレ'),
99    [qw/
100        Ẋẋ::ḐʙIX::Cl았::Co101        Ẋẋ::ḐʙIX::Cl았::ᓭᚱi알ḭźɜ::Sᑐ랍l102        Ẋẋ::ḐʙIX::Cl았::Ĭⁿᰒ텣올움ᶮ
103        Ẋẋ::ḐʙIX::Cl았::ロẈ
104        Ẋẋ::ḐʙIX::Cl105        Ẋẋ::ḐʙIX::Cl았::촘폰en팃엗
106        xx::Cl았::닽Ӕ::앛쳇s107        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ
108        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::헬pr109        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᛗƳ
110        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᶱn
111        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::бlsTȭ
112        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::ᛗᓆ톰ẰᚿẎ
113        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::앛쳇s114        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::찻찯etЁnʂ
115        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::PrxMeᖪ옫ś
116        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::밧え
117        Ẋẋ::ḐʙIX::Cl았::ᛕķ::Ạu118        Ẋẋ::ḐʙIX::Cl았::ᛕķ
119        Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy::탑l120        Ẋẋ::ḐʙIX::Cl았::ᚪc엤ȭઋᶢऋou121        Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy
122    /]
123), '... got the right DFS merge order for Ẋẋ::ḐʙIX::Cl았::Coレ');
124