Array various functions, DB IO strip assoc, Hash over array immutable

type
This commit is contained in:
2026-09-24 11:57:26 +09:00
parent 92581a6fd3
commit fae960b892
9 changed files with 687 additions and 54 deletions
@@ -421,6 +421,100 @@ final class CoreLibsCreateHashTest extends TestCase
'hash hmac valid'
);
}
// MARK: generateImmutableHashForArray
/**
* Data provider for testGenerateImmutableHashForArray.
*
* @return array
*/
public function generateImmutableHashForArrayProvider(): array
{
return [
'Empty array' => [
[],
null,
'064f01fe',
],
'Simple array' => [
['key' => 'value'],
null,
'78f40899',
],
'flat array a' => [
[0, 1, 'b', 'c', 'a'],
null,
'ccec0f5b',
],
'flat array b' => [
['b', 'c', 'a', 1, 0],
null,
'c6040f5b',
],
'flat array b, not sorted' => [
['b', 'c', 'a', 1, 0],
false,
'c6040f5b',
],
'key array a' => [
['A' => 0, 'F' => 1, 'C' => 'b', 'K' => 'c', 'B' => 'a'],
null,
'01f11355',
],
'key array a, not sorted' => [
['A' => 0, 'F' => 1, 'C' => 'b', 'K' => 'c', 'B' => 'a'],
false,
'04911355',
],
'key array b' => [
['A' => 0, 'B' => 'a', 'C' => 'b', 'F' => 1, 'K' => 'c'],
null,
'01f11355',
],
'key array b, not sorted' => [
['A' => 0, 'B' => 'a', 'C' => 'b', 'F' => 1, 'K' => 'c'],
false,
'01f11355',
],
'complex nested array' => [
[
'level1' => [
'level2' => [
'level3' => 'value'
]
]
],
null,
'd8de1565',
]
];
}
/**
* Test for generating an immutable hash from an array.
*
* @covers ::generateImmutableHashForArray
* @dataProvider generateImmutableHashForArrayProvider
* @testdox generate immutable hash for array with result $expected [$_dataName]
*
* @param array<mixed> $input
* @param string $expected
*/
public function testGenerateImmutableHashForArray(array $input, ?bool $sort_keys, string $expected): void
{
if ($sort_keys === null) {
$this->assertEquals(
$expected,
\CoreLibs\Create\Hash::generateImmutableHashForArray($input)
);
} else {
$this->assertEquals(
$expected,
\CoreLibs\Create\Hash::generateImmutableHashForArray($input, $sort_keys)
);
}
}
}
// __END__