Move autodie from ext/ to cpan/
[p5sagit/p5-mst-13.2.git] / cpan / autodie / t / usersub.t
CommitLineData
0b09a93a 1#!/usr/bin/perl -w
2use strict;
3
4use Test::More 'no_plan';
5
6sub mytest {
7 return $_[0];
8}
9
10is(mytest(q{foo}),q{foo},"Mytest returns input");
11
12my $return = eval { mytest(undef); };
13
14ok(!defined($return), "mytest returns undef without autodie");
15is($@,"","Mytest doesn't throw an exception without autodie");
16
17$return = eval {
18 use autodie qw(mytest);
19
20 mytest('foo');
21};
22
23is($return,'foo',"Mytest returns input with autodie");
9b657a62 24is($@,"","No error should be thrown");
0b09a93a 25
26$return = eval {
27 use autodie qw(mytest);
28
29 mytest(undef);
30};
31
32isa_ok($@,'autodie::exception',"autodie mytest/undef throws exception");
33
34# We set initial values here because we're expecting $data to be
35# changed to undef later on. Having it as undef to begin with means
36# we can't see mytest(undef) working correctly.
37
38my ($data, $data2) = (1,1);
39
40eval {
41 use autodie qw(mytest);
42
43 {
44 no autodie qw(mytest);
45
46 $data = mytest(undef);
47 $data2 = mytest('foo');
48 }
49};
50
51is($@,"","no autodie can counter use autodie for user subs");
52ok(!defined($data), "mytest(undef) should return undef");
53is($data2, "foo", "mytest(foo) should return foo");
54
55eval {
56 mytest(undef);
57};
58
59is($@,"","No lingering failure effects");
60
61$return = eval {
62 mytest("bar");
63};
64
65is($return,"bar","No lingering return effects");