Extracted Process Control to separate interface to allow better tests

This commit is contained in:
2020-12-11 13:23:57 +01:00
parent ffebc74a7d
commit 600f52567f
11 changed files with 287 additions and 25 deletions

View File

@@ -0,0 +1,61 @@
<?php
namespace Toalett\Multiprocessing\Tests\ProcessControl;
use PHPUnit\Framework\TestCase;
use Toalett\Multiprocessing\ProcessControl\Fork;
class ForkTest extends TestCase
{
/**
* @param int $pid
* @dataProvider positiveIntegerProvider
*/
public function testItSaysItIsAParentProcessWhenAPositivePidIsProvided(int $pid): void
{
$fork = new Fork($pid);
self::assertTrue($fork->isParent());
self::assertFalse($fork->isChild());
self::assertFalse($fork->failed());
}
/**
* @param int $pid
* @dataProvider negativeIntegerProvider
*/
public function testItSaysItFailedWhenANegativePidIsProvided(int $pid): void
{
$fork = new Fork($pid);
self::assertTrue($fork->isParent());
self::assertFalse($fork->isChild());
self::assertTrue($fork->failed());
}
public function testItSaysItIsAChildProcessWhenPidZeroIsProvided(): void
{
$fork = new Fork(0);
self::assertFalse($fork->isParent());
self::assertTrue($fork->isChild());
self::assertFalse($fork->failed());
}
public function positiveIntegerProvider(): array
{
return [
[1],
[10],
[1000],
[PHP_INT_MAX],
];
}
public function negativeIntegerProvider(): array
{
return [
[-1],
[-10],
[-1000],
[PHP_INT_MIN],
];
}
}

View File

@@ -0,0 +1,51 @@
<?php
namespace Toalett\Multiprocessing\Tests\ProcessControl;
use PHPUnit\Framework\TestCase;
use Toalett\Multiprocessing\ProcessControl\Wait;
class WaitTest extends TestCase
{
/**
* @param int $pid
* @dataProvider positiveIntegerProvider
*/
public function testItSaysAChildStoppedWhenAPositivePidIsProvided(int $pid): void
{
$wait = new Wait($pid, 0);
self::assertTrue($wait->childStopped());
self::assertFalse($wait->failed());
}
/**
* @param int $pid
* @dataProvider negativeIntegerProvider
*/
public function testItSaysItFailedWhenANegativePidIsProvided(int $pid): void
{
$wait = new Wait($pid, 0);
self::assertFalse($wait->childStopped());
self::assertTrue($wait->failed());
}
public function positiveIntegerProvider(): array
{
return [
[1],
[10],
[1000],
[PHP_INT_MAX],
];
}
public function negativeIntegerProvider(): array
{
return [
[-1],
[-10],
[-1000],
[PHP_INT_MIN],
];
}
}