use strict;
use warnings;
use Test::Most tests => 10, 'die';
use threads;
use lib 't/lib';
use Thread::Task::Manager;
use Test::Addition;
use Test::Conduit;
is( scalar( threads->list ), 0, 'No threads' );
SCOPE: {
my $conduit = Test::Conduit->new();
my $manager = Thread::Task::Manager->new( conduit => $conduit );
isa_ok( $manager, 'Thread::Task::Manager' );
is( scalar( threads->list ), 0, 'No threads' );
$manager->start;
sleep(1);
is( scalar( threads->list ), $manager->minimum+1, 'Three threads exists' );
my $addition = Test::Addition->new(
x => 2,
y => 3,
);
isa_ok( $addition, 'Test::Addition' );
$manager->schedule($addition);
is( $addition->prepare_cnt, 1, '->prepare_cnt is 1' );
is( $addition->run_cnt, 0, '->run_cnt is 0' );
is( $addition->finish_cnt, 0, '->finish_cnt is 0' );
$conduit->runonce();
$conduit->runonce();
$manager->stop;
sleep(1);
is( scalar( threads->list ), 0, 'No threads' );
}
is( scalar( threads->list ), 0, 'No threads' );