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;
|