added new test based on DBIx::Class::Core
[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
60 xx::DBIx::Class::Relationship::BelongsTo xx::DBIx::Class::Relationship::ManyToMany
61 /;
62
63 package xx::DBIx::Class::Relationship::ProxyMethods;
64 our @ISA = qw/ xx::DBIx::Class /;
65
66 package xx::DBIx::Class::Relationship::Base;
67 our @ISA = qw/ xx::DBIx::Class /;
68
69 package xx::DBIx::Class::PK::Auto;
70 our @ISA = qw/ xx::DBIx::Class /;
71
72 package xx::DBIx::Class::PK;
73 our @ISA = qw/ xx::DBIx::Class::Row /;
74
75 package xx::DBIx::Class::ResultSourceProxy::Table;
76 our @ISA = qw/
77 xx::DBIx::Class::AccessorGroup
78 xx::DBIx::Class::ResultSourceProxy
79 /;
80
81 package xx::DBIx::Class::ResultSourceProxy;
82 our @ISA = qw/ xx::DBIx::Class /;
83
84 package xx::Class::Data::Accessor; our @ISA = ();
85 package xx::DBIx::Class::Relationship::HasMany; our @ISA = ();
86 package xx::DBIx::Class::Relationship::HasOne; our @ISA = ();
87 package xx::DBIx::Class::Relationship::BelongsTo; our @ISA = ();
88 package xx::DBIx::Class::Relationship::ManyToMany; our @ISA = ();
89 package xx::DBIx::Class::Componentised; our @ISA = ();
90 package xx::DBIx::Class::AccessorGroup; our @ISA = ();
91 package xx::DBIx::Class::Serialize::Storable; our @ISA = ();
92 package xx::DBIx::Class::Relationship::Accessor; our @ISA = ();
93 package xx::DBIx::Class::Relationship::CascadeActions; our @ISA = ();
94}
95
96sub supers {
97 no strict 'refs';
98 @{$_[0] . '::ISA'};
99}
100
101is_deeply(
102 [ Algorithm::C3::merge('xx::DBIx::Class::Core', \&supers) ],
103 [qw/
104 xx::DBIx::Class::Core
105 xx::DBIx::Class::Serialize::Storable
106 xx::DBIx::Class::InflateColumn
107 xx::DBIx::Class::Relationship
108 xx::DBIx::Class::Relationship::Helpers
109 xx::DBIx::Class::Relationship::HasMany
110 xx::DBIx::Class::Relationship::HasOne
111 xx::DBIx::Class::Relationship::BelongsTo
112 xx::DBIx::Class::Relationship::ManyToMany
113 xx::DBIx::Class::Relationship::Accessor
114 xx::DBIx::Class::Relationship::CascadeActions
115 xx::DBIx::Class::Relationship::ProxyMethods
116 xx::DBIx::Class::Relationship::Base
117 xx::DBIx::Class::PK::Auto
118 xx::DBIx::Class::PK
119 xx::DBIx::Class::Row
120 xx::DBIx::Class::ResultSourceProxy::Table
121 xx::DBIx::Class::AccessorGroup
122 xx::DBIx::Class::ResultSourceProxy
123 xx::DBIx::Class
124 xx::DBIx::Class::Componentised
125 xx::Class::Data::Accessor
126 /],
127 '... got the right C3 merge order for DBIx::Class::Core');