]> git.vpit.fr Git - perl/modules/Scope-Context.git/blob - t/13-valid.t
Initial commit
[perl/modules/Scope-Context.git] / t / 13-valid.t
1 #!perl -T
2
3 use strict;
4 use warnings;
5
6 use Test::More tests => 4 + 9;
7
8 use Scope::Context;
9
10 my $fail_rx = qr/^Context has expired at \Q$0\E line [0-9]+/;
11
12 {
13  my $sc;
14  {
15   $sc = Scope::Context->new;
16   ok $sc->is_valid, 'freshly created context is valid';
17   ok $sc->up->is_valid, 'up context is valid as well';
18   {
19    ok $sc->is_valid, 'also valid in a subblock';
20   }
21  }
22  ok !$sc->is_valid, 'context has expired';
23
24  my @methods = qw<
25   up sub eval
26   reap localize localize_elem localize_delete unwind uplevel
27  >;
28  for my $action (@methods) {
29   local $@;
30   eval {
31    $sc->$action;
32   };
33   my $line = __LINE__-2;
34   like $@, qr/^Context has expired at \Q$0\E line \Q$line\E/,
35            "$action\->up croaks";
36  }
37 }