1# -*- cperl -*- 2# 3# Storable test for Set::Object objects 4 5use strict; 6 7BEGIN { 8 eval "use Storable qw(freeze thaw dclone)"; 9 if ($@) { 10 eval 'use Test::More skip_all => "Storable not installed"'; 11 exit(0); 12 } else { 13 eval 'use Test::More tests => 7'; 14 } 15} 16 17use_ok("Set::Object", qw(refaddr)); 18my $objects = [ qw(Barnie Fred Wilma) ]; 19 20my $stored = freeze ($objects); 21is_deeply(thaw($stored), $objects, "Storable works"); 22 23my $set = Set::Object->new(@$objects); 24$stored = freeze($set); 25 26use Data::Dumper; 27#print Dumper $stored; 28 29my $returned = thaw($stored); 30#print "no segfault yet!\n"; 31#diag(Dumper($returned, $set)); 32is_deeply([ sort $returned->members ], 33 [ sort $set->members ], 34 "Set::Object serialises via Storable!"); 35isnt($$returned, $$set, "thaw returned a new Set::Object"); 36 37my $spawned = dclone($set); 38is_deeply([ sort $spawned->members ], 39 [ sort $set->members ], 40 "Set::Object dclones via Storable!"); 41isnt($$spawned, $$set, "dclone returned a new Set::Object"); 42 43my $old; 44my $test = dclone ($old = [ map { Set::Object->new() } (1..1000) ]); 45 46is(@$old, @$test, "empty sets"); 47 48