File: 04_recursive.t

package info (click to toggle)
libdata-streamserializer-perl 0.07-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 676 kB
  • sloc: perl: 486; makefile: 3
file content (59 lines) | stat: -rw-r--r-- 1,177 bytes parent folder | download | duplicates (2)
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';