The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;

use Manip::END;

my $test_num = 1;

my $obj = Manip::END->new;

print "1..7\n";

ok(@$obj == 1, "correct size");

$obj->unshift(\&good::end);
$obj->unshift(\&bad::bad_end);

my @pkgs;

$obj->filter_sub(sub { push(@pkgs, shift())});

ok(@pkgs == 3, "num pkgs");
ok($pkgs[0] eq "bad", "pkg 0");
ok($pkgs[1] eq "good", "pkg 1");
ok($pkgs[2] eq "main", "pkg 2");

$obj->remove_isa("bad");

sub ok
{
	my ($ok, $msg) = @_;

	$msg ||= "";

	print $ok ? "" : "not ";
	print "ok $test_num - $msg\n";

	$test_num++;
}

END {
	ok(1, "main end");
}

package good;
sub end
{
	::ok(1, "good end");
}

package bad;

sub bad_end
{
	::ok(0, "bad end");
}