1use Test::More tests => 10; 2 3BEGIN { use_ok('NEXT') }; 4my $order = 0; 5 6package A; 7@ISA = qw/B C D/; 8 9sub test { ++$order; ::ok($order==1,"test A"); $_[0]->NEXT::ACTUAL::test;} 10 11package B; 12@ISA = qw/D C/; 13sub test { ++$order; ::ok($order==2,"test B"); $_[0]->NEXT::ACTUAL::test;} 14 15package C; 16@ISA = qw/D/; 17sub test { 18 ++$order; ::ok($order==4||$order==6,"test C"); 19 $_[0]->NEXT::ACTUAL::test; 20} 21 22package D; 23 24sub test { 25 ++$order; ::ok($order==3||$order==5||$order==7||$order==8,"test D"); 26 $_[0]->NEXT::ACTUAL::test; 27} 28 29package main; 30 31my $foo = {}; 32 33bless($foo,"A"); 34 35eval{ $foo->test } 36 ? fail("Didn't die on missing ancestor") 37 : pass("Correctly dies after full traversal"); 38