CachingIterator.basic.phpt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. /**
  3. * Test: Nette\Iterators\CachingIterator basic usage.
  4. */
  5. declare(strict_types=1);
  6. use Nette\Iterators;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. test('Two items in array', function () {
  10. $arr = ['Nette', 'Framework'];
  11. $iterator = new Iterators\CachingIterator($arr);
  12. $iterator->rewind();
  13. Assert::true($iterator->valid());
  14. Assert::true($iterator->isFirst());
  15. Assert::false($iterator->isLast());
  16. Assert::same(1, $iterator->getCounter());
  17. $iterator->next();
  18. Assert::true($iterator->valid());
  19. Assert::false($iterator->isFirst());
  20. Assert::true($iterator->isLast());
  21. Assert::same(2, $iterator->getCounter());
  22. $iterator->next();
  23. Assert::false($iterator->valid());
  24. $iterator->rewind();
  25. Assert::true($iterator->isFirst());
  26. Assert::false($iterator->isLast());
  27. Assert::same(1, $iterator->getCounter());
  28. Assert::false($iterator->isEmpty());
  29. });
  30. test('', function () {
  31. $arr = ['Nette'];
  32. $iterator = new Iterators\CachingIterator($arr);
  33. $iterator->rewind();
  34. Assert::true($iterator->valid());
  35. Assert::true($iterator->isFirst());
  36. Assert::true($iterator->isLast());
  37. Assert::same(1, $iterator->getCounter());
  38. $iterator->next();
  39. Assert::false($iterator->valid());
  40. $iterator->rewind();
  41. Assert::true($iterator->isFirst());
  42. Assert::true($iterator->isLast());
  43. Assert::same(1, $iterator->getCounter());
  44. Assert::false($iterator->isEmpty());
  45. });
  46. test('', function () {
  47. $arr = [];
  48. $iterator = new Iterators\CachingIterator($arr);
  49. $iterator->next();
  50. $iterator->next();
  51. Assert::false($iterator->isFirst());
  52. Assert::true($iterator->isLast());
  53. Assert::same(0, $iterator->getCounter());
  54. Assert::true($iterator->isEmpty());
  55. });