use strict; use warnings; use Config; BEGIN { require Test::More; if ($Config{'useithreads'}) { Test::More->import( tests => 53 ); } else { Test::More->import(skip_all => "no useithreads"); } } my @array; my %hash; sub hash { my @val = @_; is(keys %hash, 0, "hash empty"); $hash{0} = $val[0]; is(keys %hash,1, "Assign grows hash"); is($hash{0},$val[0],"Value correct"); $hash{2} = $val[2]; is(keys %hash,2, "Assign grows hash"); is($hash{0},$val[0],"Value correct"); is($hash{2},$val[2],"Value correct"); $hash{1} = $val[1]; is(keys %hash,3,"Size correct"); my @keys = keys %hash; is(join(',',sort @keys),'0,1,2',"Keys correct"); my @hval = @hash{0,1,2}; is(join(',',@hval),join(',',@val),"Values correct"); my $val = delete $hash{1}; is($val,$val[1],"Delete value correct"); is(keys %hash,2,"Size correct"); while (my ($k,$v) = each %hash) { is($v,$val[$k],"each works"); } %hash = (); is(keys %hash,0,"Clear hash"); } sub array { my @val = @_; is(@array, 0, "array empty"); $array[0] = $val[0]; is(@array,1, "Assign grows array"); is($array[0],$val[0],"Value correct"); unshift(@array,$val[2]); is($array[0],$val[2],"Unshift worked"); is($array[-1],$val[0],"-ve index"); push(@array,$val[1]); is($array[-1],$val[1],"Push worked"); is(@array,3,"Size correct"); is(shift(@array),$val[2],"Shift worked"); is(@array,2,"Size correct"); is(pop(@array),$val[1],"Pop worked"); is(@array,1,"Size correct"); @array = (); is(@array,0,"Clear array"); } ok((require threads::shared),"Require module"); array(24,[],'Thing'); hash(24,[],'Thing'); import threads::shared; share(\@array); #SKIP: # { # skip("Wibble",1); # ok(0,"No it isn't"); # } array(24,42,'Thing'); share(\%hash); hash(24,42,'Thing');