Helpers.merge.phpt 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <?php
  2. /**
  3. * Test: Nette\Schema\Helpers::merge()
  4. */
  5. declare(strict_types=1);
  6. use Nette\Schema\Helpers;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. $obj = new stdClass;
  10. $arr1 = ['a' => 'b', 'x'];
  11. $arr2 = ['c' => 'd', 'y'];
  12. $arr3 = [Helpers::PreventMerging => true, 'c' => 'd', 'y'];
  13. Assert::same(null, Helpers::merge(null, null));
  14. Assert::same(null, Helpers::merge(null, 231));
  15. Assert::same(null, Helpers::merge(null, $obj));
  16. Assert::same([], Helpers::merge(null, []));
  17. Assert::same($arr1, Helpers::merge(null, $arr1));
  18. Assert::same(231, Helpers::merge(231, null));
  19. Assert::same(231, Helpers::merge(231, 231));
  20. Assert::same(231, Helpers::merge(231, $obj));
  21. Assert::same(231, Helpers::merge(231, []));
  22. Assert::same(231, Helpers::merge(231, $arr1));
  23. Assert::same($obj, Helpers::merge($obj, null));
  24. Assert::same($obj, Helpers::merge($obj, 231));
  25. Assert::same($obj, Helpers::merge($obj, $obj));
  26. Assert::same($obj, Helpers::merge($obj, []));
  27. Assert::same($obj, Helpers::merge($obj, $arr1));
  28. Assert::same([], Helpers::merge([], null));
  29. Assert::same([], Helpers::merge([], 231));
  30. Assert::same([], Helpers::merge([], $obj));
  31. Assert::same([], Helpers::merge([], []));
  32. Assert::same($arr1, Helpers::merge([], $arr1));
  33. Assert::same($arr2, Helpers::merge($arr2, null));
  34. Assert::same($arr2, Helpers::merge($arr2, 231));
  35. Assert::same($arr2, Helpers::merge($arr2, $obj));
  36. Assert::same($arr2, Helpers::merge($arr2, []));
  37. Assert::same(['a' => 'b', 'x', 'c' => 'd', 'y'], Helpers::merge($arr2, $arr1));
  38. Assert::same(['c' => 'd', 'y'], Helpers::merge($arr3, $arr1));
  39. Assert::same(['inner' => ['c' => 'd', 'y']], Helpers::merge(['inner' => $arr3], ['inner' => $arr1]));
  40. Assert::same([['a' => 'b', 'x'], [Helpers::PreventMerging => true, 'c' => 'd', 'y']], Helpers::merge([$arr3], [$arr1]));
  41. Assert::same([Helpers::PreventMerging => true, 'c' => 'd', 'y', 'a' => 'b', 'x'], Helpers::merge($arr1, $arr3));
  42. Assert::same([20 => 'b', 10 => 'a'], Helpers::merge([10 => 'a'], [20 => 'b']));
  43. Assert::same(['b', 'a'], Helpers::merge(['a'], ['b']));