The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#! perl

use strict;
use warnings;
use Test::More;
use Statistics::R;

plan tests => 29;


my ($R1, $R2, $R3, $R4);

ok $R1 = Statistics::R->new( shared => 1 ), 'Starting in shared mode';
ok $R2 = Statistics::R->new( shared => 1 );
ok $R3 = Statistics::R->new( shared => 1 );
ok $R4 = Statistics::R->new( shared => 1 );

is $R1->is_shared, 1;
is $R2->is_shared, 1;
is $R3->is_shared, 1;
is $R4->is_shared, 1;

ok $R2->start;
ok $R4->start;

is $R1->is_started, 1;
is $R2->is_started, 1;
is $R3->is_started, 1;
is $R4->is_started, 1;

ok $R1 =~ m/\d+/, 'PIDs';
is $R1->pid, $R2->pid;
is $R1->pid, $R3->pid;
is $R1->pid, $R4->pid;

ok $R1->set( 'x', "string" ), 'Sharing data';

ok $R2->set( 'y', 3  );

is $R2->get( 'x' ), "string";

ok $R3->set( 'z', 10 );

is $R4->run( q`a <- y / z` ), '';

is $R4->get( 'a' ), 0.3;

ok $R3->stop();

is $R1->is_started, 0;
is $R2->is_started, 0;
is $R3->is_started, 0;
is $R4->is_started, 0;