File: example1.t

package info (click to toggle)
libhook-lexwrap-perl 0.24-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 136 kB
  • sloc: perl: 136; makefile: 2
file content (28 lines) | stat: -rw-r--r-- 793 bytes parent folder | download
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

use strict;
use warnings;
use Test::More tests => 2;
use Hook::LexWrap;

my $str='';
sub doit { $str.= "[doit:{".join(',',caller)."}]"; return {my=>"data"} }

SCOPED: {
 no warnings 'uninitialized'; #last argument in wrapper sub
 wrap doit,
  pre => sub { $str.="[pre1: @_]" },
  post => sub { $str.="[post1:@_]"; $_[1]=9; };

 my $temporarily = wrap doit,
  post => sub { $str.="[post2:@_]" },
  pre => sub { $str.="[pre2: @_]"};

 my @args = (1,2,3);
 doit(@args); # pre2->pre1->doit->post1->post2
 is ($str,'[pre2: 1 2 3 ][pre1: 1 2 3 ][doit:{main,'.__FILE__.','.(__LINE__-1).'}][post1:1 2 3 ][post2:1 9 3 ]');
}

$str='';
my @args = (4,5,6);
doit(@args); # pre1->doit->post1
is ($str,'[pre1: 4 5 6 ][doit:{main,'.__FILE__.','.(__LINE__-1).'}][post1:4 5 6 ]');