xref: /openbsd/gnu/usr.bin/perl/t/mro/dbic_c3_utf8.t (revision 898184e3)
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
12This 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
15The 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ᑐ랍l23      Ẋẋ::ḐʙIX::Cl았::Ĭⁿᰒ텣올움ᶮ
24      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ
25      Ẋẋ::ḐʙIX::Cl았::ᛕķ::Ạu26      Ẋẋ::ḐʙIX::Cl았::ᛕķ
27      Ẋẋ::ḐʙIX::Cl았::ロẈ
28      Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy::탑l29      Ẋẋ::ḐʙIX::Cl았::ᚪc엤ȭઋᶢऋou30    /;
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았::닽Ӕ::앛쳇s42    /;
43
44    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ; use mro 'c3';
45    our @ISA = qw/
46      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::헬pr47      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::앛쳇s48      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::찻찯etЁnʂ
49      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::PrxMeᖪ옫ś
50      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::밧え
51      Ẋẋ::ḐʙIX::Cl52    /;
53
54    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::헬prS; use mro 'c3';
55    our @ISA = qw/
56      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᛗƳ
57      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᶱn
58      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::бlsTȭ
59      Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::ᛗᓆ톰ẰᚿẎ
60    /;
61
62    package Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::PrxMeᖪ옫ś; 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엤ȭઋᶢऋou77      Ẋẋ::Ḑʙ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チ온ሺṖ::бlsTȭ; 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チ온ሺṖ::찻찯etЁnʂ; our @ISA = (); use mro 'c3';
93}
94
95ok(eq_array(
96    mro::get_linear_isa('Ẋẋ::ḐʙIX::Cl았::Coレ'),
97    [qw/
98        Ẋẋ::ḐʙIX::Cl았::Co99        Ẋẋ::ḐʙIX::Cl았::ᓭᚱi알ḭźɜ::Sᑐ랍l100        Ẋẋ::ḐʙIX::Cl았::Ĭⁿᰒ텣올움ᶮ
101        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ
102        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::헬pr103        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᛗƳ
104        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::핫ᶱn
105        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::бlsTȭ
106        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::ᛗᓆ톰ẰᚿẎ
107        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::앛쳇s108        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::찻찯etЁnʂ
109        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::PrxMeᖪ옫ś
110        Ẋẋ::ḐʙIX::Cl았::렐aチ온ሺṖ::밧え
111        Ẋẋ::ḐʙIX::Cl았::ᛕķ::Ạu112        Ẋẋ::ḐʙIX::Cl았::ᛕķ
113        Ẋẋ::ḐʙIX::Cl았::ロẈ
114        Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy::탑l115        Ẋẋ::ḐʙIX::Cl았::ᚪc엤ȭઋᶢऋou116        Ẋẋ::ḐʙIX::Cl았::ResultSourceProxy
117        Ẋẋ::ḐʙIX::Cl118        Ẋẋ::ḐʙIX::Cl았::촘폰en팃엗
119        xx::Cl았::닽Ӕ::앛쳇s120    /]
121), '... got the right C3 merge order for Ẋẋ::ḐʙIX::Cl았::Core');
122