assertSame($expected, CommandUtility::arrayToDictionary($actual, $callback, $recursive)); } /** * @group disconnected * @return void */ public function testArrayToDictionaryThrowsExceptionOnOddNumberOfElements() { $this->expectException(UnexpectedValueException::class); $this->expectExceptionMessage('Array must have an even number of arguments'); CommandUtility::arrayToDictionary(['key1', 'value1', 'key1']); } /** * @group disconnected * @requires PHP >= 8.1 * @return void */ public function testXXH3Hash() { $expectedHash = '87d57e269b9df0f0'; $this->assertEquals($expectedHash, CommandUtility::xxh3Hash('value')); } /** * @group disconnected * @requires PHP < 8.1 * @return void */ public function testXXH3HashRaiseExceptionOnPHPLowerThan81() { $this->expectException(RuntimeException::class); $this->expectExceptionMessage('XXH3 algorithm is not supported. Please install PECL xxhash extension.'); CommandUtility::xxh3Hash('value'); } /** * @group disconnected * @return void */ public function testDictionaryToArray(): void { $dict = [ 'key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3', ]; $this->assertSame( ['key1', 'value1', 'key2', 'value2', 'key3', 'value3'], CommandUtility::dictionaryToArray($dict) ); } public function arrayProvider(): array { return [ 'without nesting arrays' => [ ['key1', 'value1', 'key2', 'value2', 'key3', 'value3'], ['key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'], null, ], 'with nesting arrays' => [ ['key1', ['key2', ['key3', 'value3']]], ['key1' => ['key2' => ['key3' => 'value3']]], null, ], 'with callback applied' => [ ['key1', ['key2', ['key3', '0.1']]], ['key1' => ['key2' => ['key3' => 0.1]]], function ($key, $value) { return [$key, (float) $value]; }, ], 'with non-recursive approach' => [ ['key1', ['key2', ['key3', '0.1']]], ['key1' => ['key2', ['key3', '0.1']]], function ($key, $value) { return [$key, (float) $value]; }, false, ], ]; } }