{ my $cyclic_array=[]; $cyclic_array->[0]=\$cyclic_array->[1]; $cyclic_array->[1]=\$cyclic_array->[0]; my ($cyclic_scalar1,$cyclic_scalar2); ($cyclic_scalar1,$cyclic_scalar2)=(\$cyclic_scalar2,\$cyclic_scalar1); my $cyclic_scalar_array=[($cyclic_scalar1,$cyclic_scalar2)]; serializer_ok($obj,$cyclic_array, "Array Scalar Cross"); serializer_ok($obj,$cyclic_scalar_array,"Array Contains Scalar Cross"); } { my $foo; $foo=\$foo; serializer_ok($obj,$foo,"Leaf Loop"); } { srand(19720428); my $array=[]; my $hash={}; @$array[0..9]=($hash) x 10; @$hash{0..9}=($array) x 10; $array->[int(rand(10))]=\$hash->{+int(rand(10))} for 1..5; $hash->{int(rand(10))}=\$array->[+int(rand(10))] for 1..5; serializer_ok($obj,Data::Tools->capture($array,$hash),"Big Mess"); } { my $array=[1..10]; my $hash={1..20}; serializer_ok($obj,Data::Tools->capture($array,$hash),"Simple"); } { my $foo = { "abc\000\'\efg" => "mno\000", "reftest" => \\1, }; serializer_ok($obj,$foo,"Simple Ref Test"); } { my @cc = ('c'); my $cc = \@cc; my $bb = {}; my $aa = [ 1, $bb, $cc ]; $bb->{aa} = $aa; $bb->{bb} = $aa->[1]; $bb->{cc} = $aa->[2]; serializer_ok($obj,[$aa,$bb,$cc],"Simple Ref Test 2"); } { my ($aa,$bb); $aa = [{ a => \$bb }, { b => undef }]; $bb = [{ c => \$bb }, { d => \$aa }]; serializer_ok($obj,[\$aa,\$bb],"Simple AoH"); } { my $count=0; my $build_tree; $build_tree=sub { my $depth=shift; my $parent=shift; unless (defined $depth) { $depth=4; } else { $depth--; } return unless $depth; my $ret=[]; @$ret=( $build_tree->($depth,$ret), $build_tree->($depth,$ret), $count++, $parent ); return $ret; }; my $Tree=$build_tree->(); serializer_ok($obj,$Tree,"Parent Tree"); } { my $foo = 'Foo'; my $bar = 'Bar'; my @foobars= (\$foo,\$bar); my %foobars=(foo=>\$foo,bar=>\$bar); serializer_ok($obj,Data::Tools->capture($foo,$bar,\%foobars,\@foobars),"Ref naming 01"); serializer_ok($obj,Data::Tools->capture($foo,$bar,\@foobars,\%foobars),"Ref naming 02"); serializer_ok($obj,Data::Tools->capture($foo,\@foobars,$bar,\%foobars),"Ref naming 03"); serializer_ok($obj,Data::Tools->capture(\@foobars,$foo,$bar,\%foobars),"Ref naming 04"); serializer_ok($obj,Data::Tools->capture($foo,\%foobars,$bar,\@foobars),"Ref naming 05"); serializer_ok($obj,Data::Tools->capture($foo,\%foobars,\@foobars,$bar),"Ref naming 06"); serializer_ok($obj,Data::Tools->capture($foo,\@foobars,\%foobars,$bar),"Ref naming 07"); serializer_ok($obj,Data::Tools->capture(\@foobars,$foo,\%foobars,$bar),"Ref naming 08"); serializer_ok($obj,Data::Tools->capture(\%foobars,$foo,$bar,\@foobars),"Ref naming 09"); serializer_ok($obj,Data::Tools->capture(\%foobars,$foo,\@foobars,$bar),"Ref naming 10"); serializer_ok($obj,Data::Tools->capture(\%foobars,\@foobars,$foo,$bar),"Ref naming 11"); serializer_ok($obj,Data::Tools->capture(\@foobars,\%foobars,$foo,$bar),"Ref naming 12"); serializer_ok($obj,Data::Tools->capture($bar,$foo,\%foobars,\@foobars),"Ref naming 13"); serializer_ok($obj,Data::Tools->capture($bar,$foo,\@foobars,\%foobars),"Ref naming 14"); serializer_ok($obj,Data::Tools->capture($bar,\@foobars,$foo,\%foobars),"Ref naming 15"); serializer_ok($obj,Data::Tools->capture(\@foobars,$bar,$foo,\%foobars),"Ref naming 16"); serializer_ok($obj,Data::Tools->capture($bar,\%foobars,$foo,\@foobars),"Ref naming 17"); serializer_ok($obj,Data::Tools->capture($bar,\%foobars,\@foobars,$foo),"Ref naming 18"); serializer_ok($obj,Data::Tools->capture($bar,\@foobars,\%foobars,$foo),"Ref naming 19"); serializer_ok($obj,Data::Tools->capture(\@foobars,$bar,\%foobars,$foo),"Ref naming 20"); serializer_ok($obj,Data::Tools->capture(\%foobars,$bar,$foo,\@foobars),"Ref naming 21"); serializer_ok($obj,Data::Tools->capture(\%foobars,$bar,\@foobars,$foo),"Ref naming 22"); serializer_ok($obj,Data::Tools->capture(\%foobars,\@foobars,$bar,$foo),"Ref naming 23"); serializer_ok($obj,Data::Tools->capture(\@foobars,\%foobars,$bar,$foo),"Ref naming 24"); } { #package main; my $Sub=sub{return "foo"}; my $Sub2=sub{if (@_) { print @_,"\n"; } else { print "Nothing\n"; } }; my $hash={sub1=>$Sub,sub2=>$Sub2}; my $array=[$Sub,$Sub2]; serializer_ok($obj,[$Sub],"Sub"); serializer_ok($obj,[$Sub2],"Sub2"); serializer_ok($obj,[$hash],"HoS"); serializer_ok($obj,[$array],"AoS"); serializer_ok($obj,[$array,$hash],"H&AoS"); *serializer_nok=*serializer_ok; #serializer_ok($obj,[*serializer_nok],"Sick"); } { our @dogs = ( 'Fido', 'Wags' ); our %dogs = ( goofy => 'snoopy' ); our $dogs = "hounds"; sub dogs () { "charly" }; our %kennel = ( First => \$dogs[0], Second => \$dogs[1], ); $dogs[2] = \%kennel; our $mutts = \%kennel; $mutts = $mutts; serializer_ok($obj,Data::Tools->capture(*dogs,\%kennel,$mutts),"Dog Kennel 1"); serializer_ok($obj,[*dogs,\%kennel,$mutts],"Dog Kennel 2"); serializer_ok($obj,Data::Tools->capture(*dogs,$mutts,\%kennel),"Dog Kennel 3"); serializer_ok($obj,[*dogs,$mutts,\%kennel],"Dog Kennel 4"); serializer_ok($obj,Data::Tools->capture($mutts,*dogs,\%kennel),"Dog Kennel 5"); serializer_ok($obj,[$mutts,*dogs,\%kennel],"Dog Kennel 6"); serializer_ok($obj,Data::Tools->capture(\%kennel,*dogs,$mutts),"Dog Kennel 7"); serializer_ok($obj,[\%kennel,*dogs,$mutts],"Dog Kennel 8"); serializer_ok($obj,Data::Tools->capture(\%kennel,$mutts,*dogs),"Dog Kennel 9"); serializer_ok($obj,[\%kennel,$mutts,*dogs],"Dog Kennel 10"); serializer_ok($obj,Data::Tools->capture($mutts,\%kennel,*dogs),"Dog Kennel 11"); serializer_ok($obj,[$mutts,\%kennel,*dogs],"Dog Kennel 12"); }