]> git.vpit.fr Git - perl/modules/Scope-Upper.git/blobdiff - t/06-want_at.t
Introduce want_at()
[perl/modules/Scope-Upper.git] / t / 06-want_at.t
diff --git a/t/06-want_at.t b/t/06-want_at.t
new file mode 100644 (file)
index 0000000..7d29d24
--- /dev/null
@@ -0,0 +1,53 @@
+#!perl -T
+
+use strict;
+use warnings;
+
+use Test::More tests => 16;
+
+use Scope::Upper qw/want_at/;
+
+sub check {
+ my ($w, $exp, $desc) = @_;
+ my $cx = sub {
+  my $a = shift;
+  if (!defined $a) {
+   return 'void';
+  } elsif ($a) {
+   return 'list';
+  } else {
+   return 'scalar';
+  }
+ };
+ is $cx->($w), $cx->($exp), $desc;
+}
+
+my $w;
+
+check want_at,     undef, 'main : want_at';
+check want_at(0),  undef, 'main : want_at(0)';
+check want_at(1),  undef, 'main : want_at(1)';
+check want_at(-1), undef, 'main : want_at(-1)';
+
+my @a = sub {
+ check want_at, 1, 'sub0 : want_at';
+ {
+  check want_at,    1, 'sub : want_at';
+  check want_at(1), 1, 'sub : want_at(1)';
+  for (1) {
+   check want_at,    1, 'for : want_at';
+   check want_at(1), 1, 'for : want_at(1)';
+   check want_at(2), 1, 'for : want_at(2)';
+  }
+  my $x = eval {
+   do {
+    check want_at,    0, 'do : want_at';
+    check want_at(1), 0, 'do : want_at(0)';
+    check want_at(2), 1, 'do : want_at(1)';
+   };
+   check want_at,    0, 'eval : want_at';
+   check want_at(1), 1, 'eval : want_at(0)';
+   check want_at(2), 1, 'eval : want_at(1)';
+  };
+ }
+}->();