The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::Exception tests => 9 * 15;
use Object::Deadly;
use Symbol 'gensym';

for my $obj (
    Object::Deadly->new,
    Object::Deadly->new('a message'),
    Object::Deadly->new_with(
        do { my $v; \$v }
    ),
    Object::Deadly->new_with( [] ),
    Object::Deadly->new_with( {} ),
    Object::Deadly->new_with(qr//),
    Object::Deadly->new_with( sub { } ),
    Object::Deadly->new_with( \*STDIN ),
    Object::Deadly->new_with(gensym)
    )
{
    lives_ok { Object::Deadly->new } '->DESTROY lives';

    my $obj = Object::Deadly->new('XXX');

    dies_ok { $obj->import('...') } '->import dies';
    dies_ok { $obj->isa('...') } '->isa dies';
    dies_ok { $obj->can('...') } '->can dies';
    dies_ok { $obj->DOES('...') } '->DOES dies';
    dies_ok { $obj->VERSION } '->VERSION dies';
    dies_ok { $obj->require } '->require dies';

    dies_ok {"$obj"} '"$obj" dies';
    dies_ok { 0 + $obj } '0+$obj dies';
    dies_ok { !$obj } 'not($obj) dies';

    for my $sigil (qw( $ @ % & * )) {
        eval "dies_ok { $sigil\$obj } '$sigil\$obj dies'";
        die $@ if $@;
    }
}