getCommand(); $command->setArguments($actualArguments); $this->assertSame($expectedArguments, $command->getArguments()); } /** * @group disconnected */ public function testParseResponse(): void { $raw = ['key', ['elem1', 'elem2']]; $expected = ['key' => ['elem1', 'elem2']]; $command = $this->getCommand(); $this->assertSame($expected, $command->parseResponse($raw)); } /** * @group connected * @dataProvider listProvider * @param int $timeout * @param array $listArguments * @param string $key * @param string $modifier * @param int $count * @param array $expectedResponse * @param array $expectedModifiedList * @return void * @requiresRedisVersion >= 7.0.0 */ public function testPopElementsFromGivenList( int $timeout, array $listArguments, string $key, string $modifier, int $count, array $expectedResponse, array $expectedModifiedList ): void { $redis = $this->getClient(); $redis->lpush(...$listArguments); $actualResponse = $redis->blmpop($timeout, ['key1', $key], $modifier, $count); $this->assertSame($expectedResponse, $actualResponse); $this->assertSame($expectedModifiedList, $redis->lrange($key, 0, -1)); } public function argumentsProvider(): array { return [ 'with default arguments' => [ [1, ['key']], [1, 1, 'key', 'LEFT'], ], 'with LEFT/RIGHT argument' => [ [1, ['key'], 'right'], [1, 1, 'key', 'RIGHT'], ], 'with COUNT argument' => [ [1, ['key'], 'left', 2], [1, 1, 'key', 'LEFT', 'COUNT', 2], ], 'with all arguments' => [ [1, ['key1', 'key2'], 'right', 2], [1, 2, 'key1', 'key2', 'RIGHT', 'COUNT', 2], ], ]; } public function listProvider(): array { return [ 'pops single element - left' => [ 1, ['key', 'elem1', 'elem2', 'elem3'], 'key', 'left', 1, ['key' => ['elem3']], ['elem2', 'elem1'], ], 'pops single element - right' => [ 1, ['key', 'elem1', 'elem2', 'elem3'], 'key', 'right', 1, ['key' => ['elem1']], ['elem3', 'elem2'], ], 'pops multiple elements' => [ 1, ['key', 'elem1', 'elem2', 'elem3'], 'key', 'right', 2, ['key' => ['elem1', 'elem2']], ['elem3'], ], ]; } }