use strict; use warnings; use Test::More tests => 27; use threads::shared; ### Start of Testing ### ok( !$INC{"threads.pm"}, 'make sure threads are really off' ); # Check each faked function. foreach my $func (qw(share cond_wait cond_signal cond_broadcast)) { isnt( __PACKAGE__->can($func), 0, "Have $func" ); eval qq{$func()}; like( $@, qr/^Not enough arguments /, 'Expected error with no arguments'); my %hash = (foo => 42, bar => 23); eval qq{$func(\%hash)}; is( $@, '', 'no error' ); is_deeply( \%hash, {foo => 42, bar => 23}, 'argument is unchanged' ); } # These all have no return value. foreach my $func (qw(cond_wait cond_signal cond_broadcast)) { my @array = qw(1 2 3 4); is( eval qq{$func(\@array)}, undef, "$func has no return value" ); is_deeply( \@array, [1, 2, 3, 4], 'argument is unchanged' ); } { my @array = qw(1 2 3 4); is_deeply( share(@array), \@array, 'share() is supposed to return back its argument as a ref' ); is( ref &share({}), 'HASH' ); is_deeply( \@array, [1, 2, 3, 4], 'argument is unchanged' ); } # lock() should be a no-op. The return value is currently undefined. { my @array = qw(1 2 3 4); lock(@array); is_deeply( \@array, [1, 2, 3, 4], 'lock() should be a no-op' ); } exit(0); # EOF