Commit | Line | Data |
e1a479c5 |
1 | #!./perl |
2 | |
3 | use strict; |
4 | use warnings; |
5 | BEGIN { |
6 | unless (-d 'blib') { |
7 | chdir 't' if -d 't'; |
8 | @INC = '../lib'; |
9 | } |
10 | } |
11 | |
12 | use Test::More tests => 1; |
13 | |
14 | =pod |
15 | |
16 | This example is taken from the inheritance graph of DBIx::Class::Core in DBIx::Class v0.07002: |
17 | (No ASCII art this time, this graph is insane) |
18 | |
19 | The xx:: prefixes are just to be sure these bogus declarations never stomp on real ones |
20 | |
21 | =cut |
22 | |
23 | { |
24 | package xx::DBIx::Class::Core; use mro 'c3'; |
25 | our @ISA = qw/ |
26 | xx::DBIx::Class::Serialize::Storable |
27 | xx::DBIx::Class::InflateColumn |
28 | xx::DBIx::Class::Relationship |
29 | xx::DBIx::Class::PK::Auto |
30 | xx::DBIx::Class::PK |
31 | xx::DBIx::Class::Row |
32 | xx::DBIx::Class::ResultSourceProxy::Table |
33 | xx::DBIx::Class::AccessorGroup |
34 | /; |
35 | |
36 | package xx::DBIx::Class::InflateColumn; use mro 'c3'; |
37 | our @ISA = qw/ xx::DBIx::Class::Row /; |
38 | |
39 | package xx::DBIx::Class::Row; use mro 'c3'; |
40 | our @ISA = qw/ xx::DBIx::Class /; |
41 | |
42 | package xx::DBIx::Class; use mro 'c3'; |
43 | our @ISA = qw/ |
44 | xx::DBIx::Class::Componentised |
45 | xx::Class::Data::Accessor |
46 | /; |
47 | |
48 | package xx::DBIx::Class::Relationship; use mro 'c3'; |
49 | our @ISA = qw/ |
50 | xx::DBIx::Class::Relationship::Helpers |
51 | xx::DBIx::Class::Relationship::Accessor |
52 | xx::DBIx::Class::Relationship::CascadeActions |
53 | xx::DBIx::Class::Relationship::ProxyMethods |
54 | xx::DBIx::Class::Relationship::Base |
55 | xx::DBIx::Class |
56 | /; |
57 | |
58 | package xx::DBIx::Class::Relationship::Helpers; use mro 'c3'; |
59 | our @ISA = qw/ |
60 | xx::DBIx::Class::Relationship::HasMany |
61 | xx::DBIx::Class::Relationship::HasOne |
62 | xx::DBIx::Class::Relationship::BelongsTo |
63 | xx::DBIx::Class::Relationship::ManyToMany |
64 | /; |
65 | |
66 | package xx::DBIx::Class::Relationship::ProxyMethods; use mro 'c3'; |
67 | our @ISA = qw/ xx::DBIx::Class /; |
68 | |
69 | package xx::DBIx::Class::Relationship::Base; use mro 'c3'; |
70 | our @ISA = qw/ xx::DBIx::Class /; |
71 | |
72 | package xx::DBIx::Class::PK::Auto; use mro 'c3'; |
73 | our @ISA = qw/ xx::DBIx::Class /; |
74 | |
75 | package xx::DBIx::Class::PK; use mro 'c3'; |
76 | our @ISA = qw/ xx::DBIx::Class::Row /; |
77 | |
78 | package xx::DBIx::Class::ResultSourceProxy::Table; use mro 'c3'; |
79 | our @ISA = qw/ |
80 | xx::DBIx::Class::AccessorGroup |
81 | xx::DBIx::Class::ResultSourceProxy |
82 | /; |
83 | |
84 | package xx::DBIx::Class::ResultSourceProxy; use mro 'c3'; |
85 | our @ISA = qw/ xx::DBIx::Class /; |
86 | |
87 | package xx::Class::Data::Accessor; our @ISA = (); use mro 'c3'; |
88 | package xx::DBIx::Class::Relationship::HasMany; our @ISA = (); use mro 'c3'; |
89 | package xx::DBIx::Class::Relationship::HasOne; our @ISA = (); use mro 'c3'; |
90 | package xx::DBIx::Class::Relationship::BelongsTo; our @ISA = (); use mro 'c3'; |
91 | package xx::DBIx::Class::Relationship::ManyToMany; our @ISA = (); use mro 'c3'; |
92 | package xx::DBIx::Class::Componentised; our @ISA = (); use mro 'c3'; |
93 | package xx::DBIx::Class::AccessorGroup; our @ISA = (); use mro 'c3'; |
94 | package xx::DBIx::Class::Serialize::Storable; our @ISA = (); use mro 'c3'; |
95 | package xx::DBIx::Class::Relationship::Accessor; our @ISA = (); use mro 'c3'; |
96 | package xx::DBIx::Class::Relationship::CascadeActions; our @ISA = (); use mro 'c3'; |
97 | } |
98 | |
99 | is_deeply( |
100 | mro::get_linear_isa('xx::DBIx::Class::Core'), |
101 | [qw/ |
102 | xx::DBIx::Class::Core |
103 | xx::DBIx::Class::Serialize::Storable |
104 | xx::DBIx::Class::InflateColumn |
105 | xx::DBIx::Class::Relationship |
106 | xx::DBIx::Class::Relationship::Helpers |
107 | xx::DBIx::Class::Relationship::HasMany |
108 | xx::DBIx::Class::Relationship::HasOne |
109 | xx::DBIx::Class::Relationship::BelongsTo |
110 | xx::DBIx::Class::Relationship::ManyToMany |
111 | xx::DBIx::Class::Relationship::Accessor |
112 | xx::DBIx::Class::Relationship::CascadeActions |
113 | xx::DBIx::Class::Relationship::ProxyMethods |
114 | xx::DBIx::Class::Relationship::Base |
115 | xx::DBIx::Class::PK::Auto |
116 | xx::DBIx::Class::PK |
117 | xx::DBIx::Class::Row |
118 | xx::DBIx::Class::ResultSourceProxy::Table |
119 | xx::DBIx::Class::AccessorGroup |
120 | xx::DBIx::Class::ResultSourceProxy |
121 | xx::DBIx::Class |
122 | xx::DBIx::Class::Componentised |
123 | xx::Class::Data::Accessor |
124 | /], |
125 | '... got the right C3 merge order for xx::DBIx::Class::Core'); |