| @@ 10-39 (lines=30) @@ | ||
| 7 | use Codeception\Test\Unit; |
|
| 8 | use Lamoda\QueueBundle\Strategy\Delay\ArithmeticProgressionStrategy; |
|
| 9 | ||
| 10 | class ArithmeticProgressionStrategyTest extends Unit |
|
| 11 | { |
|
| 12 | /** |
|
| 13 | * @param int $expectedDelay |
|
| 14 | * @param int $startIntervalSec |
|
| 15 | * @param float $multiplier |
|
| 16 | * @param int $attempt |
|
| 17 | * |
|
| 18 | * @dataProvider dataGenerateDelay |
|
| 19 | */ |
|
| 20 | public function testGenerateDelay(int $expectedDelay, int $startIntervalSec, float $multiplier, int $attempt): void |
|
| 21 | { |
|
| 22 | $strategy = new ArithmeticProgressionStrategy($startIntervalSec, $multiplier); |
|
| 23 | ||
| 24 | $actualDelayInterval = $strategy->generateInterval($attempt); |
|
| 25 | ||
| 26 | $this->assertEquals($expectedDelay, $actualDelayInterval->s); |
|
| 27 | } |
|
| 28 | ||
| 29 | public function dataGenerateDelay(): array |
|
| 30 | { |
|
| 31 | return [ |
|
| 32 | [60, 60, 1600, 1], |
|
| 33 | [1660, 60, 1600, 2], |
|
| 34 | [3260, 60, 1600, 3], |
|
| 35 | [4860, 60, 1600, 4], |
|
| 36 | 'float multiplier' => [6462, 60, 1600.5, 5], |
|
| 37 | ]; |
|
| 38 | } |
|
| 39 | } |
|
| 40 | ||
| @@ 10-39 (lines=30) @@ | ||
| 7 | use Codeception\Test\Unit; |
|
| 8 | use Lamoda\QueueBundle\Strategy\Delay\GeometricProgressionStrategy; |
|
| 9 | ||
| 10 | class GeometricProgressionStrategyTest extends Unit |
|
| 11 | { |
|
| 12 | /** |
|
| 13 | * @param int $expectedDelay |
|
| 14 | * @param int $startIntervalSec |
|
| 15 | * @param float $multiplier |
|
| 16 | * @param int $attempt |
|
| 17 | * |
|
| 18 | * @dataProvider dataGenerateDelay |
|
| 19 | */ |
|
| 20 | public function testGenerateDelay(int $expectedDelay, int $startIntervalSec, float $multiplier, int $attempt): void |
|
| 21 | { |
|
| 22 | $strategy = new GeometricProgressionStrategy($startIntervalSec, $multiplier); |
|
| 23 | ||
| 24 | $actualDelayInterval = $strategy->generateInterval($attempt); |
|
| 25 | ||
| 26 | $this->assertEquals($expectedDelay, $actualDelayInterval->s); |
|
| 27 | } |
|
| 28 | ||
| 29 | public function dataGenerateDelay(): array |
|
| 30 | { |
|
| 31 | return [ |
|
| 32 | [1, 1, 1, 1], |
|
| 33 | [4, 1, 2, 3], |
|
| 34 | [4, 2, 2, 2], |
|
| 35 | [480, 60, 2, 4], |
|
| 36 | 'float multiplier' => [938, 60, 2.5, 4], |
|
| 37 | ]; |
|
| 38 | } |
|
| 39 | } |
|
| 40 | ||