#!/usr/bin/env perl use Test::More; use common::sense; use Async::ResourcePool; =head1 TESTS =over 4 =cut =item Invalidated resources are not dispatched Description =cut package Resource { sub new { bless {}, shift; } sub close { shift->{closed} = 1 } sub is_closed { shift->{closed} == 1 } } subtest "Invalidated resources are not dispatched" => sub { my $pool = Async::ResourcePool->new( limit => 1, factory => sub { my ($pool, $available) = @_; $available->(Resource->new); } ); our $invalidated; $pool->lease( sub { ($invalidated) = @_; # First release the resource... $pool->release($invalidated); } ); # Then invalidate it. It's now on the available queue. $pool->invalidate($invalidated); # Ensure we don't get it. $pool->lease( sub { my ($resource) = @_; ok $resource != $invalidated, "The given resource is not the one we invalidated." } ); }; done_testing;