The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl;
use strict;
use warnings;

use Test::More 0.88;
our $CLASS = 'Child';
require_ok( $CLASS );

my @children = map { $CLASS->new(sub { 1 }) } 1 .. 4;
my @get = $CLASS->all_procs;
is( @get, 0, "0 children started" );

my @all;
push @all => $_->start for @children;

@get = $CLASS->all_procs;
is( @get, 4, "4 children" );
is_deeply( \@get, \@all, "Exact list" );

is_deeply(
    [ $CLASS->all_proc_pids ],
    [ map { $_->pid } @all ],
    "pids"
);

is( $_->exit(), undef, "Not waited " . $_->pid ) for @all;
$CLASS->wait_all();
ok( defined($_->exit()), "waited " . $_->pid ) for @all;

done_testing;