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