Commit | Line | Data |
ed71cabb |
1 | |
2 | use strict; |
3 | use warnings; |
4 | |
ac5a5a7f |
5 | use Test::More tests => 11; |
ed71cabb |
6 | |
7 | BEGIN { |
8 | use_ok('MRO::Compat'); |
9 | } |
10 | |
11 | { |
12 | package AAA; our @ISA = qw//; |
13 | package BBB; our @ISA = qw/AAA/; |
14 | package CCC; our @ISA = qw/AAA/; |
15 | package DDD; our @ISA = qw/AAA/; |
16 | package EEE; our @ISA = qw/BBB CCC DDD/; |
17 | package FFF; our @ISA = qw/EEE DDD/; |
18 | package GGG; our @ISA = qw/FFF/; |
ac5a5a7f |
19 | package UNIVERSAL; our @ISA = qw/DDD/; |
ed71cabb |
20 | } |
21 | |
22 | is_deeply( |
23 | mro::get_linear_isa('GGG'), |
ac5a5a7f |
24 | [ 'GGG', 'FFF', 'EEE', 'BBB', 'AAA', 'CCC', 'DDD' ], |
25 | "get_linear_isa for GGG", |
ed71cabb |
26 | ); |
42915ba4 |
27 | |
28 | is_deeply( |
29 | [mro::get_isarev('GGG')], |
30 | [], |
ac5a5a7f |
31 | "get_isarev for GGG", |
42915ba4 |
32 | ); |
33 | |
34 | is_deeply( |
35 | [mro::get_isarev('DDD')], |
ac5a5a7f |
36 | [ 'EEE', 'FFF', 'GGG', 'UNIVERSAL' ], |
37 | "get_isarev for DDD", |
42915ba4 |
38 | ); |
39 | |
40 | is_deeply( |
41 | [mro::get_isarev('AAA')], |
ac5a5a7f |
42 | [ 'BBB', 'CCC', 'DDD', 'EEE', 'FFF', 'GGG', 'UNIVERSAL' ], |
43 | "get_isarev for AAA", |
42915ba4 |
44 | ); |
ac5a5a7f |
45 | |
46 | ok(mro::is_universal('UNIVERSAL'), "UNIVERSAL is_universal"); |
47 | ok(mro::is_universal('DDD'), "DDD is_universal"); |
48 | ok(mro::is_universal('AAA'), "AAA is_universal"); |
49 | ok(!mro::is_universal('MRO::Compat'), "MRO::Compat !is_universal"); |
50 | ok(!mro::is_universal('BBB'), "BBB !is_universal"); |
51 | ok(!mro::is_universal('FFF'), "FFF !is_universal"); |