File: 80defer%2BSKT.t

package info (click to toggle)
libsyntax-keyword-try-perl 0.31-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 264 kB
  • sloc: perl: 898; makefile: 3
file content (64 lines) | stat: -rw-r--r-- 1,184 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/perl

use v5.14;
use warnings;

use Test2::V0;

BEGIN {
   plan skip_all => "Syntax::Keyword::Defer >= 0.02 is not available"
      unless eval { require Syntax::Keyword::Defer;
                    Syntax::Keyword::Defer->VERSION( '0.02' ) };
   plan skip_all => "Syntax::Keyword::Try >= 0.18 is not available"
      unless eval { require Syntax::Keyword::Try;
                    Syntax::Keyword::Try->VERSION( '0.18' ) };

   Syntax::Keyword::Defer->import;
   Syntax::Keyword::Try->import;

   diag( "Syntax::Keyword::Defer $Syntax::Keyword::Defer::VERSION, " .
         "Syntax::Keyword::Try $Syntax::Keyword::Try::VERSION" );
}

# defer inside try
{
   my $ok;
   try {
      defer { $ok .= "2" }
      $ok .= "1";
   }
   catch ($e) { }

   is( $ok, "12", 'defer inside try' );
}

# defer inside catch
{
   my $ok;
   try {
      die "Oopsie\n";
   }
   catch ($e) {
      defer { $ok .= "4" }
      $ok .= "3";
   }

   is( $ok, "34", 'defer inside catch' );
}

# try/catch inside defer
{
   my $ok;

   {
      defer {
         try { $ok .= "6" }
         catch ($e) {}
      }
      $ok .= "5";
   }

   is( $ok, "56", 'try/catch inside defer' );
}

done_testing;