#!/usr/bin/env perl use warnings; use strict; use FindBin; use lib "$FindBin::Bin/lib"; use Test::More tests => 21; our ($pvio, $pvfm); use_ok('OtherTypes'); # Since we use use_ok, this is effectively 'compile time'. ok( defined *OtherTypes::foo{SCALAR}, "SCALAR slot intact at compile time" ); ok( defined *OtherTypes::foo{ARRAY}, "ARRAY slot intact at compile time" ); ok( defined *OtherTypes::foo{HASH}, "HASH slot intact at compile time" ); ok( defined *OtherTypes::foo{IO}, "IO slot intact at compile time" ); ok( defined *OtherTypes::foo{FORMAT}, "FORMAT slot intact at compile time" ); is( $OtherTypes::foo, 23, "SCALAR slot correct at compile time" ); is( $OtherTypes::foo[0], "bar", "ARRAY slot correct at compile time" ); is( $OtherTypes::foo{mouse}, "trap", "HASH slot correct at compile time" ); is( *OtherTypes::foo{IO}, $pvio, "IO slot correct at compile time" ); is( *OtherTypes::foo{FORMAT}, $pvfm, "FORMAT slot correct at compile time" ); eval q{ ok( defined *OtherTypes::foo{SCALAR}, "SCALAR slot intact at run time" ); ok( defined *OtherTypes::foo{ARRAY}, "ARRAY slot intact at run time" ); ok( defined *OtherTypes::foo{HASH}, "HASH slot intact at run time" ); ok( defined *OtherTypes::foo{IO}, "IO slot intact at run time" ); TODO: { local $TODO = "Copying formats fails due to a bug in Perl."; ok( defined *OtherTypes::foo{FORMAT}, "FORMAT slot intact at run time" ); } is( $OtherTypes::foo, 23, "SCALAR slot correct at run time" ); is( $OtherTypes::foo[0], "bar", "ARRAY slot correct at run time" ); is( $OtherTypes::foo{mouse}, "trap", "HASH slot correct at run time" ); is( *OtherTypes::foo{IO}, $pvio, "IO slot correct at run time" ); TODO: { local $TODO = "Copying formats fails due to a bug in Perl."; is( *OtherTypes::foo{FORMAT}, $pvfm, "FORMAT slot correct at run time" ); } };