1use strict; 2use warnings; 3 4use Test::More (tests => 53); 5 6### Start of Testing ### 7 8my @array; 9my %hash; 10 11sub hash 12{ 13 my @val = @_; 14 is(keys %hash, 0, "hash empty"); 15 $hash{0} = $val[0]; 16 is(keys %hash,1, "Assign grows hash"); 17 is($hash{0},$val[0],"Value correct"); 18 $hash{2} = $val[2]; 19 is(keys %hash,2, "Assign grows hash"); 20 is($hash{0},$val[0],"Value correct"); 21 is($hash{2},$val[2],"Value correct"); 22 $hash{1} = $val[1]; 23 is(keys %hash,3,"Size correct"); 24 my @keys = keys %hash; 25 is(join(',',sort @keys),'0,1,2',"Keys correct"); 26 my @hval = @hash{0,1,2}; 27 is(join(',',@hval),join(',',@val),"Values correct"); 28 my $val = delete $hash{1}; 29 is($val,$val[1],"Delete value correct"); 30 is(keys %hash,2,"Size correct"); 31 while (my ($k,$v) = each %hash) { 32 is($v,$val[$k],"each works"); 33 } 34 %hash = (); 35 is(keys %hash,0,"Clear hash"); 36} 37 38sub array 39{ 40 my @val = @_; 41 is(@array, 0, "array empty"); 42 $array[0] = $val[0]; 43 is(@array,1, "Assign grows array"); 44 is($array[0],$val[0],"Value correct"); 45 unshift(@array,$val[2]); 46 is($array[0],$val[2],"Unshift worked"); 47 is($array[-1],$val[0],"-ve index"); 48 push(@array,$val[1]); 49 is($array[-1],$val[1],"Push worked"); 50 is(@array,3,"Size correct"); 51 is(shift(@array),$val[2],"Shift worked"); 52 is(@array,2,"Size correct"); 53 is(pop(@array),$val[1],"Pop worked"); 54 is(@array,1,"Size correct"); 55 @array = (); 56 is(@array,0,"Clear array"); 57} 58 59ok((require threads::shared),"Require module"); 60 61if ($threads::shared::VERSION && ! $ENV{'PERL_CORE'}) { 62 diag('Testing threads::shared ' . $threads::shared::VERSION); 63} 64 65array(24, [], 'Thing'); 66hash(24, [], 'Thing'); 67 68threads::shared->import(); 69 70share(\@array); 71array(24, 42, 'Thing'); 72 73share(\%hash); 74hash(24, 42, 'Thing'); 75 76exit(0); 77 78# EOF 79