1#!/usr/bin/env perl 2use warnings; 3use strict; 4 5use FindBin; 6use lib "$FindBin::Bin/lib"; 7use Test::More tests => 21; 8 9our ($pvio, $pvfm); 10 11use_ok('OtherTypes'); 12 13# Since we use use_ok, this is effectively 'compile time'. 14 15ok( defined *OtherTypes::foo{SCALAR}, 16 "SCALAR slot intact at compile time" ); 17ok( defined *OtherTypes::foo{ARRAY}, 18 "ARRAY slot intact at compile time" ); 19ok( defined *OtherTypes::foo{HASH}, 20 "HASH slot intact at compile time" ); 21ok( defined *OtherTypes::foo{IO}, 22 "IO slot intact at compile time" ); 23ok( defined *OtherTypes::foo{FORMAT}, 24 "FORMAT slot intact at compile time" ); 25 26is( $OtherTypes::foo, 23, 27 "SCALAR slot correct at compile time" ); 28is( $OtherTypes::foo[0], "bar", 29 "ARRAY slot correct at compile time" ); 30is( $OtherTypes::foo{mouse}, "trap", 31 "HASH slot correct at compile time" ); 32is( *OtherTypes::foo{IO}, $pvio, 33 "IO slot correct at compile time" ); 34is( *OtherTypes::foo{FORMAT}, $pvfm, 35 "FORMAT slot correct at compile time" ); 36 37eval q{ 38 ok( defined *OtherTypes::foo{SCALAR}, 39 "SCALAR slot intact at run time" ); 40 ok( defined *OtherTypes::foo{ARRAY}, 41 "ARRAY slot intact at run time" ); 42 ok( defined *OtherTypes::foo{HASH}, 43 "HASH slot intact at run time" ); 44 ok( defined *OtherTypes::foo{IO}, 45 "IO slot intact at run time" ); 46 47 TODO: { 48 local $TODO = "Copying formats fails due to a bug in Perl."; 49 ok( defined *OtherTypes::foo{FORMAT}, 50 "FORMAT slot intact at run time" ); 51 } 52 53 is( $OtherTypes::foo, 23, 54 "SCALAR slot correct at run time" ); 55 is( $OtherTypes::foo[0], "bar", 56 "ARRAY slot correct at run time" ); 57 is( $OtherTypes::foo{mouse}, "trap", 58 "HASH slot correct at run time" ); 59 is( *OtherTypes::foo{IO}, $pvio, 60 "IO slot correct at run time" ); 61 62 TODO: { 63 local $TODO = "Copying formats fails due to a bug in Perl."; 64 is( *OtherTypes::foo{FORMAT}, $pvfm, 65 "FORMAT slot correct at run time" ); 66 } 67}; 68