package Test::Unit::tests::TestInnerClass; use strict; use base qw(Test::Unit::TestCase); use Test::Unit::InnerClass; sub test_inner_class_multiple_load { my $self = shift; $self->assert(defined($Test::Unit::InnerClass::SIGNPOST)); local $^W = 0; # reloading will trigger warnings, turn them off do 'Test/Unit/InnerClass.pm'; # we must load it this way to check, sorry my $how_often_1 = $Test::Unit::InnerClass::HOW_OFTEN; my $innerclass_1 = Test::Unit::InnerClass::make_inner_class("Test::Unit::TestCase", << 'EOIC', "innerclass1"); EOIC do 'Test/Unit/InnerClass.pm'; # require would not load it - it caches my $how_often_2 = $Test::Unit::InnerClass::HOW_OFTEN; my $innerclass_2 = Test::Unit::InnerClass::make_inner_class("Test::Unit::TestCase", << 'EOIC', "innerclass2"); EOIC $self->assert($how_often_2 > $how_often_1); $self->assert(ref($innerclass_1) ne ref($innerclass_2)); } 1;