CachingIterator.construct.phpt 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. /**
  3. * Test: Nette\Iterators\CachingIterator constructor.
  4. */
  5. declare(strict_types=1);
  6. use Nette\Iterators;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. test('array', function () {
  10. $arr = ['Nette', 'Framework'];
  11. $tmp = [];
  12. foreach (new Iterators\CachingIterator($arr) as $k => $v) {
  13. $tmp[] = "$k => $v";
  14. }
  15. Assert::same([
  16. '0 => Nette',
  17. '1 => Framework',
  18. ], $tmp);
  19. });
  20. test('stdClass', function () {
  21. $arr = (object) ['Nette', 'Framework'];
  22. $tmp = [];
  23. foreach (new Iterators\CachingIterator($arr) as $k => $v) {
  24. $tmp[] = "$k => $v";
  25. }
  26. Assert::same([
  27. '0 => Nette',
  28. '1 => Framework',
  29. ], $tmp);
  30. });
  31. test('IteratorAggregate', function () {
  32. $arr = new ArrayObject(['Nette', 'Framework']);
  33. $tmp = [];
  34. foreach (new Iterators\CachingIterator($arr) as $k => $v) {
  35. $tmp[] = "$k => $v";
  36. }
  37. Assert::same([
  38. '0 => Nette',
  39. '1 => Framework',
  40. ], $tmp);
  41. });
  42. test('Iterator', function () {
  43. $arr = new ArrayObject(['Nette', 'Framework']);
  44. $tmp = [];
  45. foreach (new Iterators\CachingIterator($arr->getIterator()) as $k => $v) {
  46. $tmp[] = "$k => $v";
  47. }
  48. Assert::same([
  49. '0 => Nette',
  50. '1 => Framework',
  51. ], $tmp);
  52. });
  53. test('SimpleXMLElement', function () {
  54. $arr = new SimpleXMLElement('<feed><item>Nette</item><item>Framework</item></feed>');
  55. $tmp = [];
  56. foreach (new Iterators\CachingIterator($arr) as $k => $v) {
  57. $tmp[] = "$k => $v";
  58. }
  59. Assert::same([
  60. 'item => Nette',
  61. 'item => Framework',
  62. ], $tmp);
  63. });
  64. test('object', function () {
  65. Assert::exception(function () {
  66. $arr = dir('.');
  67. foreach (new Iterators\CachingIterator($arr) as $k => $v);
  68. }, InvalidArgumentException::class, null);
  69. });
  70. class RecursiveIteratorAggregate implements IteratorAggregate
  71. {
  72. public function getIterator(): Traversable
  73. {
  74. return new ArrayObject(['Nette', 'Framework']);
  75. }
  76. }
  77. test('recursive IteratorAggregate', function () {
  78. $arr = new RecursiveIteratorAggregate;
  79. $tmp = [];
  80. foreach (new Iterators\CachingIterator($arr) as $k => $v) {
  81. $tmp[] = "$k => $v";
  82. }
  83. Assert::same([
  84. '0 => Nette',
  85. '1 => Framework',
  86. ], $tmp);
  87. });