File: 011_aliased_dedupe.t

package info (click to toggle)
libsereal-encoder-perl 5.004%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,384 kB
  • sloc: ansic: 12,087; perl: 6,049; sh: 25; makefile: 9
file content (41 lines) | stat: -rw-r--r-- 1,141 bytes parent folder | download | duplicates (6)
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
#!perl
use strict;
use warnings;

use File::Spec;
use Scalar::Util qw(refaddr reftype);
use lib File::Spec->catdir(qw(t lib));

BEGIN {
    lib->import('lib')
        if !-d 't';
}
use Sereal::TestSet qw(:all);

use Sereal::Encoder qw(encode_sereal);
use Sereal::Encoder::Constants qw(:all);
use Data::Dumper;    # must be loaded AFTER the test set (bug in perl)
use Test::More;

my $ok= have_encoder_and_decoder();
if ( not $ok ) {
    plan skip_all => 'Did not find right version of decoder';
}
else {
    my $dup= "bad" x 100;
    my $dup2= "beef" x 100;
    my $enc= Sereal::Encoder->new( { aliased_dedupe_strings => 1 } );
    my $encoded= $enc->encode( [ $dup, "a", $dup2, "b", $dup, "c", $dup2, "d" ] );
    my $decoded= Sereal::Decoder::decode_sereal($encoded);
    is( $decoded->[0], $dup );
    is( $decoded->[2], $dup2 );
    is(
        refaddr( \$decoded->[0] ), refaddr( \$decoded->[4] ),
        "expected same reference for decoded->[0] and decoded->[2]"
    );
    is(
        refaddr( \$decoded->[2] ), refaddr( \$decoded->[6] ),
        "expected same reference for decoded->[2] and decoded->[6]"
    );
}
done_testing();