This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
rt #72866 - add magic to arrayrefs assigned to *Foo::ISA
[perl5.git] / t / mro / isa_dfs.t
1 #!perl -w
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6     require "./test.pl";
7 }
8
9 use strict;
10
11 plan 'no_plan';
12
13 # package klonk doesn't have a stash.
14
15 package kapow;
16
17 # No parents
18
19 package urkkk;
20
21 # 1 parent
22 @urkkk::ISA = 'klonk';
23
24 package kayo;
25
26 # 2 parents
27 @urkkk::ISA = ('klonk', 'kapow');
28
29 package thwacke;
30
31 # No parents, has @ISA
32 @thwacke::ISA = ();
33
34 package zzzzzwap;
35
36 @zzzzzwap::ISA = ('thwacke', 'kapow');
37
38 package whamm;
39
40 @whamm::ISA = ('kapow', 'thwacke');
41
42 package main;
43
44 require mro;
45
46 my %expect =
47     (
48      klonk => [qw(klonk)],
49      urkkk => [qw(urkkk klonk kapow)],
50      kapow => [qw(kapow)],
51      kayo => [qw(kayo)],
52      thwacke => [qw(thwacke)],
53      zzzzzwap => [qw(zzzzzwap thwacke kapow)],
54      whamm => [qw(whamm kapow thwacke)],
55     );
56
57 foreach my $package (qw(klonk urkkk kapow kayo thwacke zzzzzwap whamm)) {
58     my $ref = bless [], $package;
59     my $isa = $expect{$package};
60     is("@{mro::get_linear_isa($package)}", "@$isa", "\@ISA for $package");
61
62     foreach my $class ($package, @$isa, 'UNIVERSAL') {
63         isa_ok($ref, $class, $package);
64     }
65 }