summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-08-19 06:18:00 -0500
committerJesse Luehrs <doy@tozt.net>2012-08-19 06:18:10 -0500
commit6615f365c3cea887645a1cdc186b7a7f7e9fe93e (patch)
tree3897a2c520e0fa12d1357b9f6d7d6d55a5953851
parentd57ed48a8e7391e268d63dd2b108d3f80ff018a9 (diff)
downloadfun-6615f365c3cea887645a1cdc186b7a7f7e9fe93e.tar.gz
fun-6615f365c3cea887645a1cdc186b7a7f7e9fe93e.zip
more tests
-rw-r--r--t/defaults.t13
-rw-r--r--t/name.t47
2 files changed, 60 insertions, 0 deletions
diff --git a/t/defaults.t b/t/defaults.t
index 0780f50..7f710b6 100644
--- a/t/defaults.t
+++ b/t/defaults.t
@@ -32,4 +32,17 @@ is(bar(7), "ran sub, got 19");
like($warning, qr/Use of uninitialized value \$baz in addition \(\+\)/);
}
+fun baz ($a, $b = our $FOO) {
+ return "$a $b";
+}
+
+{
+ no warnings 'misc'; # 'not imported' warning because we use $FOO later
+ eval '$FOO';
+ like($@, qr/Global symbol "\$FOO" requires explicit package name/, "doesn't leak scope");
+}
+
+our $FOO = "abc";
+is(baz("123"), "123 abc");
+
done_testing;
diff --git a/t/name.t b/t/name.t
new file mode 100644
index 0000000..74195fe
--- /dev/null
+++ b/t/name.t
@@ -0,0 +1,47 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More;
+
+use Carp;
+
+my $file = __FILE__;
+my $line = __LINE__;
+
+{
+ package Foo;
+ use Fun;
+ fun foo ($x, $y) {
+ Carp::confess "$x $y";
+ }
+
+ eval {
+ foo("abc", "123");
+ };
+
+ my $line_confess = $line + 6;
+ my $line_foo = $line + 10;
+
+ ::like($@, qr/^abc 123 at $file line $line_confess\.\n\tFoo::foo\('abc', 123\) called at $file line $line_foo/);
+}
+
+SKIP: { skip "Sub::Name required", 1 unless eval { require Sub::Name };
+
+{
+ package Bar;
+ use Fun;
+ *bar = Sub::Name::subname(bar => fun ($a, $b) { Carp::confess($a + $b) });
+
+ eval {
+ bar(4, 5);
+ };
+
+ my $line_confess = $line + 24;
+ my $line_bar = $line + 27;
+
+ ::like($@, qr/^9 at $file line $line_confess\.\n\tBar::bar\(4, 5\) called at $file line $line_bar/);
+}
+
+}
+
+done_testing;