DigiComp.Sequence/Tests/Functional/SequenceTest.php
2017-03-13 16:59:04 +01:00

59 lines
1.7 KiB
PHP

<?php
namespace DigiComp\Sequence\Tests\Functional;
use DigiComp\Sequence\Service\SequenceGenerator;
use Neos\Flow\Tests\FunctionalTestCase;
class SequenceTest extends FunctionalTestCase
{
/**
* @var bool
*/
protected static $testablePersistenceEnabled = true;
/**
* @test
*/
public function sequenceTest()
{
$sequenceGenerator = $this->objectManager->get(SequenceGenerator::class);
$number = $sequenceGenerator->getLastNumberFor($sequenceGenerator);
$this->assertEquals(0, $number);
$this->assertEquals(1, $sequenceGenerator->getNextNumberFor($sequenceGenerator));
$pIds = [];
for ($i = 0; $i < 10; $i++) {
$pId = pcntl_fork();
if ($pId) {
$pIds[] = $pId;
}
else {
for ($j = 0; $j < 10; $j++) {
$sequenceGenerator->getNextNumberFor($sequenceGenerator);
}
//making a hard exit to avoid phpunit having the tables cleaned up again
exit;
}
}
foreach ($pIds as $pId) {
$status = 0;
pcntl_waitpid($pId, $status);
}
$this->assertEquals(101, $sequenceGenerator->getLastNumberFor($sequenceGenerator));
}
/**
* @test
*/
public function advanceTest()
{
$sequenceGenerator = $this->objectManager->get(SequenceGenerator::class);
$sequenceGenerator->advanceTo(100, $sequenceGenerator);
$this->assertEquals(100, $sequenceGenerator->getLastNumberFor($sequenceGenerator));
$this->assertEquals(0, $sequenceGenerator->getLastNumberFor('strangeOtherSequence'));
}
}