The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -w

use strict;
use Test::More tests => 16;
use Test::Exception;
use Class::Monadic qw(:all);

{
	package T;

	sub new{
		return bless {}, shift;
	}
	package TX;
	package TXX;
}

for(1 .. 2){
	my $x = T->new;
	my $y = T->new;

	ok !($x->isa('TX')), '$x is not injected';
	ok !($x->isa('TXX')), '$x is not injected';

	monadic($x)->inject_base(qw(TX TXX));
	isa_ok $x, 'T',   '$x';
	isa_ok $x, 'TX',  '$x';
	isa_ok $x, 'TXX', '$x';

	#use Data::Dumper; print Dumper monadic($x);

	isa_ok $y, 'T', '$y';
	ok !($y->isa('TX')), '$y is not injected';
	ok !($y->isa('TXX')), '$y is not injected';
}