<?php
/**
* Test: NetteIteratorsCachingIterator basic usage.
*/
declare(strict_types=1);
use NetteIterators;
use TesterAssert;
require __DIR__ . '/../bootstrap.php';
test('Two items in array', function () {
$arr = ['Nette', 'Framework'];
$iterator = new IteratorsCachingIterator($arr);
$iterator->rewind();
assert::
true($iterator->
valid());
assert::
true($iterator->
isFirst());
assert::
false($iterator->
isLast());
assert::
same(1,
$iterator->
getCounter());
$iterator->next();
assert::
true($iterator->
valid());
assert::
false($iterator->
isFirst());
assert::
true($iterator->
isLast());
assert::
same(2,
$iterator->
getCounter());
$iterator->next();
assert::
false($iterator->
valid());
$iterator->rewind();
assert::
true($iterator->
isFirst());
assert::
false($iterator->
isLast());
assert::
same(1,
$iterator->
getCounter());
assert::
false($iterator->
isEmpty());
});
test('', function () {
$arr = ['Nette'];
$iterator = new IteratorsCachingIterator($arr);
$iterator->rewind();
assert::
true($iterator->
valid());
assert::
true($iterator->
isFirst());
assert::
true($iterator->
isLast());
assert::
same(1,
$iterator->
getCounter());
$iterator->next();
assert::
false($iterator->
valid());
$iterator->rewind();
assert::
true($iterator->
isFirst());
assert::
true($iterator->
isLast());
assert::
same(1,
$iterator->
getCounter());
assert::
false($iterator->
isEmpty());
});
test('', function () {
$arr = [];
$iterator = new IteratorsCachingIterator($arr);
$iterator->next();
$iterator->next();
assert::
false($iterator->
isFirst());
assert::
true($iterator->
isLast());
assert::
same(0,
$iterator->
getCounter());
assert::
true($iterator->
isEmpty());
});