File: 24_tied.t

package info (click to toggle)
libdata-messagepack-perl 1.02-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,060 kB
  • sloc: ansic: 5,697; perl: 1,123; makefile: 10
file content (70 lines) | stat: -rw-r--r-- 2,091 bytes parent folder | download | duplicates (7)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
use t::Util;
use Test::More tests => 8;
use Data::MessagePack;

require Tie::Hash;
require Tie::Array;

my (%hash, @array);
tie( %hash, 'Tie::StdHash' );
%hash = (
	 'module'     => 'DiskUsage',
	 'func'       => 'fetchdiskusagewithextras',
	 'apiversion' => '2',
	);

{
    my $mp = Data::MessagePack->new();
    my $packed = eval { $mp->pack( \%hash ); };
    ok(unpack("C", substr($packed,0,1)) == 0x83, "pack a tied FixMap with 3 elems");
    #diag unpack("CC", substr($packed,0,2)),$packed;
    my $unpacked = eval { $mp->unpack( $packed ); };
    if ($@) {
      ok( 0, "unpack tied hash" );
    } else {
      is_deeply( \%hash, $unpacked, "round trip tied hash" );
    }
}

{
    local $ENV{PERL_DATA_MESSAGEPACK} = 'pp';
    my $mp = Data::MessagePack->new();
    my $packed = eval { $mp->pack( \%hash ); };
    ok(unpack("C", substr($packed,0,1)) == 0x83, "PP pack a tied FixMap with 3 elems");
    #diag unpack("CC", substr($packed,0,2)),$packed;
    my $unpacked = eval { $mp->unpack( $packed ); };
    if ($@) {
      ok( 0, "PP unpack tied hash" );
    } else {
      is_deeply( \%hash, $unpacked, "PP round trip tied hash" );
    }
}

tie( @array, 'Tie::StdArray' );
@array = (0..9);
{
    my $mp = Data::MessagePack->new();
    my $packed = eval { $mp->pack( \@array ); };
    ok(unpack("C", substr($packed,0,1)) == 0x9a, "pack a tied FixArray with 10 elems");
    #diag unpack("C", substr($packed,0,2)),$packed;
    my $unpacked = eval { $mp->unpack( $packed ); };
    if ($@) {
      ok( 0, "unpack tied array" );
    } else {
      is_deeply( \@array, $unpacked, "round trip tied array" );
    }
}

{
    local $ENV{PERL_DATA_MESSAGEPACK} = 'pp';
    my $mp = Data::MessagePack->new();
    my $packed = eval { $mp->pack( \@array ); };
    ok(unpack("C", substr($packed,0,1)) == 0x9a, "PP pack a tied FixArray with 10 elems");
    #diag unpack("C", substr($packed,0,2)),$packed;
    my $unpacked = eval { $mp->unpack( $packed ); };
    if ($@) {
      ok( 0, "PP unpack tied array" );
    } else {
      is_deeply( \@array, $unpacked, "PP round trip tied array" );
    }
}