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