| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- namespace App\Tests\Service\Utils;
- use App\Service\Utils\ArrayUtils;
- use PHPUnit\Framework\TestCase;
- class ArrayUtilsTest extends TestCase
- {
- public function testGetChanges(): void
- {
- // Non-recursive (default)
- $this->assertEquals(
- ['b' => -2, 'c' => ['d' => 4, 'e' => ['f' => -5]], 'g' => 7],
- ArrayUtils::getChanges(
- ['a' => 1, 'b' => 2, 'c' => ['d' => 4, 'e' => ['f' => 5]]],
- ['a' => 1, 'b' => -2, 'c' => ['d' => 4, 'e' => ['f' => -5]], 'g' => 7],
- )
- );
- // Recursive
- $this->assertEquals(
- ['b' => -2, 'c' => ['e' => ['f' => -5]], 'g' => 7],
- ArrayUtils::getChanges(
- ['a' => 1, 'b' => 2, 'c' => ['d' => 4, 'e' => ['f' => 5]]],
- ['a' => 1, 'b' => -2, 'c' => ['d' => 4, 'e' => ['f' => -5]], 'g' => 7],
- true
- )
- );
- // Recursive with unchanged sub array
- $this->assertEquals(
- ['b' => -2],
- ArrayUtils::getChanges(
- ['a' => 1, 'b' => 2, 'c' => ['d' => 4, 'e' => ['f' => 5]]],
- ['a' => 1, 'b' => -2, 'c' => ['d' => 4, 'e' => ['f' => 5]]],
- true
- )
- );
- // No changes
- $this->assertEquals(
- [],
- ArrayUtils::getChanges(
- ['a' => 1, 'b' => 2, 'c' => ['d' => 4, 'e' => ['f' => 5]]],
- ['a' => 1, 'b' => 2, 'c' => ['d' => 4, 'e' => ['f' => 5]]],
- )
- );
- // Empty arrays
- $this->assertEquals(
- [],
- ArrayUtils::getChanges(
- [],
- [],
- )
- );
- // First array is empty
- $this->assertEquals(
- ['a' => 1],
- ArrayUtils::getChanges(
- [],
- ['a' => 1],
- )
- );
- // With callback
- $this->assertEquals(
- ['a' => 2],
- ArrayUtils::getChanges(
- ['a' => 1, 'b' => ''],
- ['a' => 2, 'b' => null],
- false,
- static function ($v1, $v2) { return ($v1 ?? '') === ($v2 ?? ''); }
- )
- );
- }
- }
|