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
|
use warnings;
use strict;
use lib qw(blib/lib blib/arch ../blib/lib ../blib/arch);
use Test::More tests => 8;
use Data::Dumper;
$| = 1;
$Data::Dumper::Indent = 1;
$Data::Dumper::Terse = 1;
$Data::Dumper::Useqq = 1;
$Data::Dumper::Deepcopy = 1;
BEGIN { use_ok('Data::StreamSerializer') };
my $t = { a => 'b' };
$t->{c} = $t;
my $sr = new Data::StreamSerializer $t;
my $str = '';
while(defined(my $part = $sr->next)) {
$str .= $part;
}
ok $sr->recursion_detected, "Detected hash recursion";
eval $str;
ok !$@, 'Result is deserialized correctly';
my $a;
my $b = \$a;
my $c = \$b;
my $d = \$c;
my $e = \\\\\\\ $d;
$a = \$d;
$sr = new Data::StreamSerializer($a);
$sr->recursion_depth(2);
$str = '';
while(defined(my $part = $sr->next)) {
$str .= $part;
}
ok $str eq 'undef', 'Scalar recursion';
ok $sr->recursion_detected, "Detected scalar recursion";
eval $str;
ok !$@, 'Result is deserialized correctly';
$t = [ qw( a b c ) ];
push @$t, $t;
$sr = new Data::StreamSerializer $t;
$str = '';
while(defined(my $part = $sr->next)) {
$str .= $part;
}
ok $sr->recursion_detected, "Detected ARRAY recursion";
eval $str;
ok !$@, 'Result is deserialized correctly';
|