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