Blame t/base.t

Packit 69e8b9
use strict; use warnings;
Packit 69e8b9
use lib (-e 't' ? 't' : 'test'), 'inc';
Packit 69e8b9
Packit 69e8b9
package XXX;
Packit 69e8b9
BEGIN {require Thing}
Packit 69e8b9
use base 'Thing';
Packit 69e8b9
Packit 69e8b9
package Foo;
Packit 69e8b9
use base 'Spiffy';
Packit 69e8b9
BEGIN { @Foo::EXPORT=qw(xxx) }
Packit 69e8b9
sub xxx {}
Packit 69e8b9
Packit 69e8b9
package Bar;
Packit 69e8b9
use base 'Foo', 'Thing';
Packit 69e8b9
Packit 69e8b9
package Boo;
Packit 69e8b9
BEGIN { @Boo::EXPORT=qw(xxx) }
Packit 69e8b9
sub xxx {}
Packit 69e8b9
Packit 69e8b9
package Goo;
Packit 69e8b9
use base 'Boo';
Packit 69e8b9
Packit 69e8b9
package Something;
Packit 69e8b9
use base 'Spiffy';
Packit 69e8b9
BEGIN { @Something::EXPORT = qw(qwerty) }
Packit 69e8b9
sub qwerty {}
Packit 69e8b9
Packit 69e8b9
package SomethingGood;
Packit 69e8b9
use base 'Something';
Packit 69e8b9
Packit 69e8b9
package main;
Packit 69e8b9
use Test::More tests => 24;
Packit 69e8b9
Packit 69e8b9
ok(Thing->isa('Spiffy'));
Packit 69e8b9
ok(defined &XXX::thing);
Packit 69e8b9
ok(defined &XXX::field);
Packit 69e8b9
ok(defined &XXX::const);
Packit 69e8b9
Packit 69e8b9
ok(defined &Foo::field);
Packit 69e8b9
ok(defined &Foo::const);
Packit 69e8b9
ok(defined &Foo::xxx);
Packit 69e8b9
Packit 69e8b9
ok(Bar->isa('Spiffy'));
Packit 69e8b9
ok(Bar->isa('Foo'));
Packit 69e8b9
ok(Bar->isa('Thing'));
Packit 69e8b9
ok(defined &Bar::field);
Packit 69e8b9
ok(defined &Bar::const);
Packit 69e8b9
ok(defined &Bar::xxx);
Packit 69e8b9
ok(defined &Bar::thing);
Packit 69e8b9
Packit 69e8b9
ok(not Boo->isa('Spiffy'));
Packit 69e8b9
ok(defined &Boo::xxx);
Packit 69e8b9
Packit 69e8b9
ok(not Goo->isa('Spiffy'));
Packit 69e8b9
ok(Goo->isa('Boo'));
Packit 69e8b9
ok(not defined &Goo::xxx);
Packit 69e8b9
Packit 69e8b9
ok(SomethingGood->isa('Something'));
Packit 69e8b9
ok(SomethingGood->isa('Spiffy'));
Packit 69e8b9
ok(not SomethingGood->isa('Thing'));
Packit 69e8b9
ok(not defined &SomethingGood::thing);
Packit 69e8b9
Packit 69e8b9
ok(not @Spiffy::ISA);