#!perl -w # Testing standard dataset in msgpack/test/*.{json,mpac}. # Don't edit msgpack/perl/t/std/*, which are just copies. use strict; use Test::More; use t::Util; use Data::MessagePack; sub slurp { open my $fh, '<:raw', $_[0] or die "failed to open '$_[0]': $!"; local $/; return scalar <$fh>; } my @data = do { my $json = slurp("t/std/cases.json"); $json =~ s/:/=>/g; @{ eval $json }; }; my $mpac1 = slurp("t/std/cases.mpac"); my $mpac2 = slurp("t/std/cases_compact.mpac"); my $mps = Data::MessagePack::Unpacker->new(); my $t = 1; for my $mpac($mpac1, $mpac2) { note "mpac", $t++; my $offset = 0; my $i = 0; while($offset < length($mpac)) { $offset = $mps->execute($mpac, $offset); ok $mps->is_finished, "data[$i] : is_finished"; is_deeply $mps->data, $data[$i], "data[$i]"; $mps->reset; $i++; } } done_testing;