90 lines
2.2 KiB
PHP
90 lines
2.2 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* This file is part of the Symfony package.
|
||
|
*
|
||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||
|
*
|
||
|
* For the full copyright and license information, please view the LICENSE
|
||
|
* file that was distributed with this source code.
|
||
|
*/
|
||
|
|
||
|
namespace Symfony\Component\Lock\Tests\Strategy;
|
||
|
|
||
|
use PHPUnit\Framework\TestCase;
|
||
|
use Symfony\Component\Lock\Strategy\ConsensusStrategy;
|
||
|
|
||
|
/**
|
||
|
* @author Jérémy Derussé <jeremy@derusse.com>
|
||
|
*/
|
||
|
class ConsensusStrategyTest extends TestCase
|
||
|
{
|
||
|
/** @var ConsensusStrategy */
|
||
|
private $strategy;
|
||
|
|
||
|
protected function setUp()
|
||
|
{
|
||
|
$this->strategy = new ConsensusStrategy();
|
||
|
}
|
||
|
|
||
|
public function provideMetResults()
|
||
|
{
|
||
|
// success, failure, total, isMet
|
||
|
yield [3, 0, 3, true];
|
||
|
yield [2, 1, 3, true];
|
||
|
yield [2, 0, 3, true];
|
||
|
yield [1, 2, 3, false];
|
||
|
yield [1, 1, 3, false];
|
||
|
yield [1, 0, 3, false];
|
||
|
yield [0, 3, 3, false];
|
||
|
yield [0, 2, 3, false];
|
||
|
yield [0, 1, 3, false];
|
||
|
yield [0, 0, 3, false];
|
||
|
|
||
|
yield [2, 0, 2, true];
|
||
|
yield [1, 1, 2, false];
|
||
|
yield [1, 0, 2, false];
|
||
|
yield [0, 2, 2, false];
|
||
|
yield [0, 1, 2, false];
|
||
|
yield [0, 0, 2, false];
|
||
|
}
|
||
|
|
||
|
public function provideIndeterminate()
|
||
|
{
|
||
|
// success, failure, total, canBeMet
|
||
|
yield [3, 0, 3, true];
|
||
|
yield [2, 1, 3, true];
|
||
|
yield [2, 0, 3, true];
|
||
|
yield [1, 2, 3, false];
|
||
|
yield [1, 1, 3, true];
|
||
|
yield [1, 0, 3, true];
|
||
|
yield [0, 3, 3, false];
|
||
|
yield [0, 2, 3, false];
|
||
|
yield [0, 1, 3, true];
|
||
|
yield [0, 0, 3, true];
|
||
|
|
||
|
yield [2, 0, 2, true];
|
||
|
yield [1, 1, 2, false];
|
||
|
yield [1, 0, 2, true];
|
||
|
yield [0, 2, 2, false];
|
||
|
yield [0, 1, 2, false];
|
||
|
yield [0, 0, 2, true];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider provideMetResults
|
||
|
*/
|
||
|
public function testMet($success, $failure, $total, $isMet)
|
||
|
{
|
||
|
$this->assertSame($isMet, $this->strategy->isMet($success, $total));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider provideIndeterminate
|
||
|
*/
|
||
|
public function testCanBeMet($success, $failure, $total, $isMet)
|
||
|
{
|
||
|
$this->assertSame($isMet, $this->strategy->canBeMet($failure, $total));
|
||
|
}
|
||
|
}
|