Commit | Line | Data |
e8b77df6 |
1 | use warnings; |
e4c24739 |
2 | use strict; |
e8b77df6 |
3 | |
4 | use Test::More; |
4f507947 |
5 | use MRO::Compat; |
e4c24739 |
6 | |
d8190011 |
7 | use lib qw(t/lib); |
8 | use DBICTest; # do not remove even though it is not used |
9 | |
e4c24739 |
10 | { |
e8b77df6 |
11 | package AAA; |
e4c24739 |
12 | |
e8b77df6 |
13 | use base "DBIx::Class::Core"; |
14 | } |
e4c24739 |
15 | |
e8b77df6 |
16 | { |
17 | package BBB; |
e4c24739 |
18 | |
e8b77df6 |
19 | use base 'AAA'; |
e4c24739 |
20 | |
e8b77df6 |
21 | #Injecting a direct parent. |
22 | __PACKAGE__->inject_base( __PACKAGE__, 'AAA' ); |
23 | } |
e4c24739 |
24 | |
e8b77df6 |
25 | { |
26 | package CCC; |
e4c24739 |
27 | |
e8b77df6 |
28 | use base 'AAA'; |
e4c24739 |
29 | |
e8b77df6 |
30 | #Injecting an indirect parent. |
31 | __PACKAGE__->inject_base( __PACKAGE__, 'DBIx::Class::Core' ); |
e4c24739 |
32 | } |
33 | |
4f507947 |
34 | eval { mro::get_linear_isa('BBB'); }; |
e4c24739 |
35 | ok (! $@, "Correctly skipped injecting a direct parent of class BBB"); |
36 | |
4f507947 |
37 | eval { mro::get_linear_isa('CCC'); }; |
e4c24739 |
38 | ok (! $@, "Correctly skipped injecting an indirect parent of class BBB"); |
e8b77df6 |
39 | |
40 | use DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server; |
41 | use B; |
42 | |
43 | is_deeply ( |
44 | mro::get_linear_isa('DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server'), |
45 | [qw/ |
46 | DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server |
47 | DBIx::Class::Storage::DBI::Sybase |
48 | DBIx::Class::Storage::DBI::MSSQL |
49 | DBIx::Class::Storage::DBI::UniqueIdentifier |
50 | DBIx::Class::Storage::DBI |
51 | DBIx::Class::Storage::DBIHacks |
52 | DBIx::Class::Storage |
53 | DBIx::Class |
54 | DBIx::Class::Componentised |
55 | Class::C3::Componentised |
56 | Class::Accessor::Grouped |
57 | /], |
58 | 'Correctly ordered ISA of DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server' |
59 | ); |
60 | |
61 | my $dialect_ref = DBIx::Class::Storage::DBI::Sybase::Microsoft_SQL_Server->can('sql_limit_dialect'); |
62 | is ( |
63 | B::svref_2object($dialect_ref)->GV->STASH->NAME, |
64 | 'DBIx::Class::Storage::DBI::MSSQL', |
65 | 'Correct method picked' |
66 | ); |
67 | |
68 | done_testing; |