Iterator
インターフェイスを実装してクラスを作るときに、とりあえず Iterator
のインターフェイスは満たしているかテストするためのAssertionです。PHPUnitで使います。
<?php
/**
* Assert that the object is iterable
* @param \Iterator $iterator
*/
public function assertIterable(Iterator $iterator)
{
$result1 = array();
$result2 = array();
foreach ( $iterator as $key => $item ) {
$result1[] = array('key' => $key, 'item' => $item);
}
foreach ( $iterator as $key => $item ) {
$result2[] = array('key' => $key, 'item' => $item);
}
$this->assertTrue(count($result1) >= 2, 'Iterator must have more than 2 items');
$this->assertSame($result1, $result2, 'Iteration should be free to side effect');
}