use strict;
use warnings FATAL => 'all';

use Test::More 0.88;
use if $ENV{AUTHOR_TESTING}, 'Test::Warnings';
use Test::Fatal;
use Object::ForkAware;

is(
    exception {
        ok(Object::ForkAware->isa('Object::ForkAware'), 'isa as a class method checks isa of class');

        ok(!Object::ForkAware->isa('Warble'), '..and correctly returns false');
    },
    undef,
    "isa as a class method doesn't crash",
);

SKIP: {
    skip 'perl 5.9.4 required for UNIVERSAL::DOES', 3 if $] < '5.009004';
    is(
        exception {
            ok(Object::ForkAware->DOES('Object::ForkAware'), 'DOES as a class method checks DOES of class');

            ok(!Object::ForkAware->DOES('Warble'), '..and correctly returns false');
        },
        undef,
        "DOES as a class method doesn't crash",
    );
}

is(
    exception {
        is(
            Object::ForkAware->can('can'),
            \&Object::ForkAware::can,
            'can as a class method returns correct sub',
        );

        ok(!Object::ForkAware->can('nomethod'), '..or undef');
    },
    undef,
    "can as a class method doesn't crash",
);

done_testing;
