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_dfs.t
CommitLineData
e1a479c5
BB
1#!./perl
2
3use strict;
4use warnings;
e1a479c5 5
c94dd5be 6require q(./test.pl); plan(tests => 1);
e1a479c5
BB
7
8=pod
9
10This 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
13The 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 'dfs';
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 'dfs';
31 our @ISA = qw/ xx::DBIx::Class::Row /;
32
33 package xx::DBIx::Class::Row; use mro 'dfs';
34 our @ISA = qw/ xx::DBIx::Class /;
35
36 package xx::DBIx::Class; use mro 'dfs';
37 our @ISA = qw/
38 xx::DBIx::Class::Componentised
39 xx::Class::Data::Accessor
40 /;
41
42 package xx::DBIx::Class::Relationship; use mro 'dfs';
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 'dfs';
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 'dfs';
61 our @ISA = qw/ xx::DBIx::Class /;
62
63 package xx::DBIx::Class::Relationship::Base; use mro 'dfs';
64 our @ISA = qw/ xx::DBIx::Class /;
65
66 package xx::DBIx::Class::PK::Auto; use mro 'dfs';
67 our @ISA = qw/ xx::DBIx::Class /;
68
69 package xx::DBIx::Class::PK; use mro 'dfs';
70 our @ISA = qw/ xx::DBIx::Class::Row /;
71
72 package xx::DBIx::Class::ResultSourceProxy::Table; use mro 'dfs';
73 our @ISA = qw/
74 xx::DBIx::Class::AccessorGroup
75 xx::DBIx::Class::ResultSourceProxy
76 /;
77
78 package xx::DBIx::Class::ResultSourceProxy; use mro 'dfs';
79 our @ISA = qw/ xx::DBIx::Class /;
80
81 package xx::Class::Data::Accessor; our @ISA = (); use mro 'dfs';
82 package xx::DBIx::Class::Relationship::HasMany; our @ISA = (); use mro 'dfs';
83 package xx::DBIx::Class::Relationship::HasOne; our @ISA = (); use mro 'dfs';
84 package xx::DBIx::Class::Relationship::BelongsTo; our @ISA = (); use mro 'dfs';
85 package xx::DBIx::Class::Relationship::ManyToMany; our @ISA = (); use mro 'dfs';
86 package xx::DBIx::Class::Componentised; our @ISA = (); use mro 'dfs';
87 package xx::DBIx::Class::AccessorGroup; our @ISA = (); use mro 'dfs';
88 package xx::DBIx::Class::Serialize::Storable; our @ISA = (); use mro 'dfs';
89 package xx::DBIx::Class::Relationship::Accessor; our @ISA = (); use mro 'dfs';
90 package xx::DBIx::Class::Relationship::CascadeActions; our @ISA = (); use mro 'dfs';
91}
92
c94dd5be 93ok(eq_array(
e1a479c5
BB
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::Row
100 xx::DBIx::Class
101 xx::DBIx::Class::Componentised
102 xx::Class::Data::Accessor
103 xx::DBIx::Class::Relationship
104 xx::DBIx::Class::Relationship::Helpers
105 xx::DBIx::Class::Relationship::HasMany
106 xx::DBIx::Class::Relationship::HasOne
107 xx::DBIx::Class::Relationship::BelongsTo
108 xx::DBIx::Class::Relationship::ManyToMany
109 xx::DBIx::Class::Relationship::Accessor
110 xx::DBIx::Class::Relationship::CascadeActions
111 xx::DBIx::Class::Relationship::ProxyMethods
112 xx::DBIx::Class::Relationship::Base
113 xx::DBIx::Class::PK::Auto
114 xx::DBIx::Class::PK
115 xx::DBIx::Class::ResultSourceProxy::Table
116 xx::DBIx::Class::AccessorGroup
117 xx::DBIx::Class::ResultSourceProxy
c94dd5be
RGS
118 /]
119), '... got the right DFS merge order for xx::DBIx::Class::Core');