Fix tests

This commit is contained in:
gfx 2010-09-17 13:10:54 +09:00
parent 599964ea5f
commit 5e602fb575
4 changed files with 64 additions and 24 deletions

View File

@ -2,8 +2,16 @@ use strict;
use warnings; use warnings;
use Data::MessagePack; use Data::MessagePack;
use Test::More tests => 9; use Test::More tests => 9;
use t::Util;
my $input = [
false,true,null,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,
127,127,255,65535,4294967295,-32,-32,-128,-32768,
-2147483648,0.0,-0.0,1.0,-1.0,"a","a","a","","","",
[0],[0],[0],[],[],[],{},{},{},
{"a" => 97},{"a" => 97},{"a" => 97},[[]],[["a"]]
];
my $input = [ 42, "foo", { x => [ (1) x 16 ] }, undef, 1 ];
my $packed = Data::MessagePack->pack($input); my $packed = Data::MessagePack->pack($input);
is_deeply(Data::MessagePack->unpack($packed), $input); is_deeply(Data::MessagePack->unpack($packed), $input);
@ -16,30 +24,20 @@ is_deeply(Data::MessagePack->unpack($packed), $input);
{ {
my $up = Data::MessagePack::Unpacker->new(); my $up = Data::MessagePack::Unpacker->new();
is $up->execute(substr($packed, 0, 3), 0), 3; $packed x= 3;
ok !$up->is_finished;
$up->execute($packed, 3);
ok $up->is_finished;
is_deeply $up->data, $input;
}
my $offset = 0;
for my $i(1 .. 3) {
note "block $i (offset: $offset/".length($packed).")";
note "starting 3 bytes: ", join " ", map { unpack 'H2', $_ }
split //, substr($packed, $offset, 3);
{ $offset = $up->execute($packed, $offset);
my $up = Data::MessagePack::Unpacker->new(); ok $up->is_finished, 'finished';
my $size = 8;
note "packed size: ", length($packed);
open my $stream, '<:bytes :scalar', \$packed;
binmode $stream;
my $buff;
while( read($stream, $buff, $size) ) {
note "buff: ", join " ", map { unpack 'H2', $_ } split //, $buff;
$up->execute($buff);
}
ok $up->is_finished, 'is_finished';
my $data = $up->data; my $data = $up->data;
note explain($data);
is_deeply $data, $input; is_deeply $data, $input;
$up->reset();
}
} }

View File

@ -28,7 +28,7 @@ for my $mpac($mpac1, $mpac2) {
my $offset = 0; my $offset = 0;
my $i = 0; my $i = 0;
while($offset < length($mpac)) { while($offset < length($mpac)) {
$offset += $mps->execute($mpac, $offset); $offset = $mps->execute($mpac, $offset);
is_deeply $mps->data, $data[$i], "data[$i]"; is_deeply $mps->data, $data[$i], "data[$i]";
$mps->reset; $mps->reset;
$i++; $i++;

40
perl/t/10_splitted_bytes.t Executable file
View File

@ -0,0 +1,40 @@
#!perl
# This feature is not yet supported, but 0.23 (or former) caused SEGV in this code,
# so we put it here.
use strict;
use warnings;
use Data::MessagePack;
use Test::More;
use t::Util;
my $input = [
false,true,null,0,0,0,0,0,0,0,0,0,-1,-1,-1,-1,-1,
127,127,255,65535,4294967295,-32,-32,-128,-32768,
-2147483648,0.0,-0.0,1.0,-1.0,"a","a","a","","","",
[0],[0],[0],[],[],[],{},{},{},
{"a" => 97},{"a" => 97},{"a" => 97},[[]],[["a"]]
];
my $packed = Data::MessagePack->pack($input);
foreach my $size(1 .. 16) {
local $TODO = "Splitted byte streaming is not yet supported (bufer size: $size)";
my $up = Data::MessagePack::Unpacker->new();
open my $stream, '<:bytes :scalar', \$packed;
binmode $stream;
my $buff;
while( read($stream, $buff, $size) ) {
#note "buff: ", join " ", map { unpack 'H2', $_ } split //, $buff;
$up->execute($buff);
}
ok $up->is_finished, 'is_finished';
my $data = $up->data;
is_deeply $data, $input;
}
done_testing;

View File

@ -1,6 +1,7 @@
package t::Util; package t::Util;
use strict; use strict;
use warnings; use warnings;
use Data::MessagePack;
sub import { sub import {
my $pkg = caller(0); my $pkg = caller(0);
@ -15,6 +16,7 @@ sub import {
*{"$pkg\::false"} = sub () { *{"$pkg\::false"} = sub () {
Data::MessagePack::false() Data::MessagePack::false()
}; };
*{"$pkg\::null"} = sub() { undef };
} }
1; 1;