msgpack/perl/t/50_leaktrace.t

63 lines
1.1 KiB
Perl
Raw Normal View History

2010-09-15 15:26:02 +09:00
#!perl -w
use strict;
2010-09-16 20:36:07 +09:00
use Test::Requires { 'Test::LeakTrace' => 0.13 };
2010-09-15 15:26:02 +09:00
use Test::More;
use Data::MessagePack;
2010-09-18 14:38:35 +09:00
BEGIN {
if($INC{'Data/MessagePack/PP.pm'}) {
plan skip_all => 'disabled in PP';
}
}
2010-09-15 15:26:02 +09:00
2010-09-16 20:24:01 +09:00
my $simple_data = "xyz";
my $complex_data = {
2010-09-15 15:26:02 +09:00
a => 'foo',
b => 42,
c => undef,
d => [qw(bar baz)],
e => 3.14,
};
2010-09-16 20:24:01 +09:00
note 'pack';
2010-09-15 15:26:02 +09:00
no_leaks_ok {
2010-09-16 20:24:01 +09:00
my $s = Data::MessagePack->pack($complex_data);
2010-09-15 15:26:02 +09:00
};
no_leaks_ok {
eval { Data::MessagePack->pack([\*STDIN]) };
2010-09-16 20:36:07 +09:00
note $@;
$@ or warn "# it must die";
2010-09-15 15:26:02 +09:00
};
2010-09-16 20:24:01 +09:00
note 'unpack';
my $s = Data::MessagePack->pack($simple_data);
my $c = Data::MessagePack->pack($complex_data);
2010-09-15 15:26:02 +09:00
no_leaks_ok {
my $data = Data::MessagePack->unpack($s);
};
no_leaks_ok {
2010-09-16 20:24:01 +09:00
my $data = Data::MessagePack->unpack($c);
};
no_leaks_ok {
my $broken = $s;
chop $broken;
eval { Data::MessagePack->unpack($broken) };
2010-09-16 20:36:07 +09:00
note $@;
$@ or warn "# it must die";
};
note 'stream';
no_leaks_ok {
my $up = Data::MessagePack::Unpacker->new();
$up->execute($c);
my $data = $up->data();
2010-09-15 15:26:02 +09:00
};
done_testing;