This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: new C3 MRO patch
[perl5.git] / t / mro / basic.t
CommitLineData
e1a479c5
BB
1#!./perl
2
3use strict;
4use warnings;
5
6BEGIN {
7 unless (-d 'blib') {
8 chdir 't' if -d 't';
9 @INC = '../lib';
10 }
11}
12
13use Test::More;
14
15plan tests => 8;
16
17{
18 package MRO_A;
19 our @ISA = qw//;
20 package MRO_B;
21 our @ISA = qw//;
22 package MRO_C;
23 our @ISA = qw//;
24 package MRO_D;
25 our @ISA = qw/MRO_A MRO_B MRO_C/;
26 package MRO_E;
27 our @ISA = qw/MRO_A MRO_B MRO_C/;
28 package MRO_F;
29 our @ISA = qw/MRO_D MRO_E/;
30}
31
32is(mro::get_mro('MRO_F'), 'dfs');
33is_deeply(mro::get_linear_isa('MRO_F'),
34 [qw/MRO_F MRO_D MRO_A MRO_B MRO_C MRO_E/]
35);
36mro::set_mro('MRO_F', 'c3');
37is(mro::get_mro('MRO_F'), 'c3');
38is_deeply(mro::get_linear_isa('MRO_F'),
39 [qw/MRO_F MRO_D MRO_E MRO_A MRO_B MRO_C/]
40);
41
42my @isarev = sort { $a cmp $b } mro::get_isarev('MRO_B');
43is_deeply(\@isarev,
44 [qw/MRO_D MRO_E MRO_F/]
45);
46
47ok(!mro::is_universal('MRO_B'));
48
49@UNIVERSAL::ISA = qw/MRO_F/;
50ok(mro::is_universal('MRO_B'));
51
52@UNIVERSAL::ISA = ();
53ok(mro::is_universal('MRO_B'));