Arrays.map().phpt 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * Test: Nette\Utils\Arrays::map()
  4. */
  5. declare(strict_types=1);
  6. use Nette\Utils\Arrays;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. test('', function () {
  10. $arr = [];
  11. $log = [];
  12. $res = Arrays::map(
  13. $arr,
  14. function ($v, $k, $arr) use (&$log) {
  15. $log[] = func_get_args();
  16. return true;
  17. },
  18. );
  19. Assert::same([], $res);
  20. Assert::same([], $log);
  21. });
  22. test('', function () {
  23. $arr = ['a', 'b'];
  24. $log = [];
  25. $res = Arrays::map(
  26. $arr,
  27. function ($v, $k, $arr) use (&$log) {
  28. $log[] = func_get_args();
  29. return $v . $v;
  30. },
  31. );
  32. Assert::same(['aa', 'bb'], $res);
  33. Assert::same([['a', 0, $arr], ['b', 1, $arr]], $log);
  34. });
  35. test('', function () {
  36. $arr = ['x' => 'a', 'y' => 'b'];
  37. $log = [];
  38. $res = Arrays::map(
  39. $arr,
  40. function ($v, $k, $arr) use (&$log) {
  41. $log[] = func_get_args();
  42. return $v . $v;
  43. },
  44. );
  45. Assert::same(['x' => 'aa', 'y' => 'bb'], $res);
  46. Assert::same([['a', 'x', $arr], ['b', 'y', $arr]], $log);
  47. });
  48. test('', function () {
  49. $arr = new ArrayIterator(['x' => 'a', 'y' => 'b']);
  50. $log = [];
  51. $res = Arrays::map(
  52. $arr,
  53. function ($v, $k, $arr) use (&$log) {
  54. $log[] = func_get_args();
  55. return $v . $v;
  56. },
  57. );
  58. Assert::same(['x' => 'aa', 'y' => 'bb'], $res);
  59. Assert::same([['a', 'x', $arr], ['b', 'y', $arr]], $log);
  60. });