This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Restore null checks to stashpv_hvname_match [perl #101430]
[perl5.git] / t / mro / isa_c3.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 use mro 'c3';
17
18 # No parents
19
20 package urkkk;
21 use mro 'c3';
22
23 # 1 parent
24 @urkkk::ISA = 'klonk';
25
26 package kayo;
27 use mro 'c3';
28
29 # 2 parents
30 @urkkk::ISA = ('klonk', 'kapow');
31
32 package thwacke;
33 use mro 'c3';
34
35 # No parents, has @ISA
36 @thwacke::ISA = ();
37
38 package zzzzzwap;
39 use mro 'c3';
40
41 @zzzzzwap::ISA = ('thwacke', 'kapow');
42
43 package whamm;
44 use mro 'c3';
45
46 @whamm::ISA = ('kapow', 'thwacke');
47
48 package main;
49
50 my %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
61 foreach 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 }