1#!./perl 2 3use strict; 4use warnings; 5 6require q(./test.pl); plan(tests => 1); 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 '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 93ok(eq_array( 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 118 /] 119), '... got the right C3 merge order for xx::DBIx::Class::Core'); 120