On Sun, Dec 16, 2001 at 02:41:31PM +0000, Piers Cawley wrote: > Nothing wrong with an adaptor/factory returning something that isn't a > Foo, so long as it has the same interface.
That's why its isa_ok() and not ref_ok(). On the off chance Foo->new is supposed to return something that bears no relation to Foo at all, then just don't use isa_ok. Or, check that its that other thing: my $foo = Foo->new; isa_ok( $foo, 'Bar' ); > > The equivalent code without isa_ok() would be: > > > > my $foo = Foo->new; > > ok( $foo->isa('Foo') ); > > > > except should $foo be unblessed or undef that will explode. You have > > to start doing things like: > > > > my $foo = Foo->new; > > ok( defined $foo && $foo->isa('Foo') ); > > > > which rapidly gets tiresome. It also provides you little information > > about what value $foo held that caused it to fail. > > What's wrong with > > ok ( eval { $foo->isa('Foo') } ); > > or even: > > ok (eval { ref($foo) && $foo->isa('Foo') }); As Kurt already pointed out, you can do: ok( UNIVERSAL::isa($foo, 'Foo') ); but if it fails you have no idea what $foo was. -- Michael G. Schwern <[EMAIL PROTECTED]> http://www.pobox.com/~schwern/ Perl Quality Assurance <[EMAIL PROTECTED]> Kwalitee Is Job One First day in Prison Back behind the shower door Adhesive applied -- ignatz