xref: /openbsd/gnu/usr.bin/perl/cpan/NEXT/t/actual.t (revision d415bd75)
1use strict;
2use warnings;
3use Test::More tests => 10;
4
5BEGIN { use_ok('NEXT') };
6my $order = 0;
7
8package A;
9our @ISA = qw/B C D/;
10use if $] >= 5.009005, 'mro', 'dfs';
11
12
13sub test { ++$order; ::ok($order==1,"test A"); $_[0]->NEXT::ACTUAL::test;}
14
15package B;
16our @ISA = qw/D C/;
17use if $] >= 5.009005, 'mro', 'dfs';
18sub test { ++$order; ::ok($order==2,"test B"); $_[0]->NEXT::ACTUAL::test;}
19
20package C;
21our @ISA = qw/D/;
22use if $] >= 5.009005, 'mro', 'dfs';
23
24sub test {
25	++$order; ::ok($order==4||$order==6,"test C");
26	$_[0]->NEXT::ACTUAL::test;
27}
28
29package D;
30use if $] >= 5.009005, 'mro', 'dfs';
31
32sub test {
33	++$order; ::ok($order==3||$order==5||$order==7||$order==8,"test D");
34        $_[0]->NEXT::ACTUAL::test;
35}
36
37package main;
38use if $] >= 5.009005, 'mro', 'dfs';
39
40my $foo = {};
41
42bless($foo,"A");
43
44eval{ $foo->test }
45	? fail("Didn't die on missing ancestor")
46	: pass("Correctly dies after full traversal");
47