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