1#!./perl 2 3BEGIN { 4 chdir 't' if -d 't'; 5 @INC = '../lib'; 6} 7 8use Test; 9BEGIN { plan tests => 10; } 10 11BEGIN { 12 require autouse; 13 eval { 14 "autouse"->import('List::Util' => 'List::Util::first(&@)'); 15 }; 16 ok( !$@ ); 17 18 eval { 19 "autouse"->import('List::Util' => 'Foo::min'); 20 }; 21 ok( $@, qr/^autouse into different package attempted/ ); 22 23 "autouse"->import('List::Util' => qw(max first(&@))); 24} 25 26my @a = (1,2,3,4,5.5); 27ok( max(@a), 5.5); 28 29 30# first() has a prototype of &@. Make sure that's preserved. 31ok( (first { $_ > 3 } @a), 4); 32 33 34# Example from the docs. 35use autouse 'Carp' => qw(carp croak); 36 37{ 38 my @warning; 39 local $SIG{__WARN__} = sub { push @warning, @_ }; 40 carp "this carp was predeclared and autoused\n"; 41 ok( scalar @warning, 1 ); 42 ok( $warning[0], "this carp was predeclared and autoused\n" ); 43 44 eval { croak "It is but a scratch!" }; 45 ok( $@, qr/^It is but a scratch!/); 46} 47 48 49# Test that autouse's lazy module loading works. We assume that nothing 50# involved in this test uses Text::Soundex, which is pretty safe. 51use autouse 'Text::Soundex' => qw(soundex); 52 53my $mod_file = 'Text/Soundex.pm'; # just fine and portable for %INC 54ok( !exists $INC{$mod_file} ); 55ok( soundex('Basset'), 'B230' ); 56ok( exists $INC{$mod_file} ); 57 58