_adapter = new Zend_Paginator_Adapter_Iterator($iterator); } /** * Cleans up the environment after running a test. */ protected function tearDown () { $this->_adapter = null; parent::tearDown(); } public function testGetsItemsAtOffsetZero() { $actual = $this->_adapter->getItems(0, 10); $this->assertTrue($actual instanceof LimitIterator); $i = 1; foreach ($actual as $item) { $this->assertEquals($i, $item); $i++; } } public function testGetsItemsAtOffsetTen() { $actual = $this->_adapter->getItems(10, 10); $this->assertTrue($actual instanceof LimitIterator); $i = 11; foreach ($actual as $item) { $this->assertEquals($i, $item); $i++; } } public function testReturnsCorrectCount() { $this->assertEquals(101, $this->_adapter->count()); } public function testThrowsExceptionIfNotCountable() { $iterator = new LimitIterator(new ArrayIterator(range(1, 101))); try { new Zend_Paginator_Adapter_Iterator($iterator); } catch (Exception $e) { $this->assertTrue($e instanceof Zend_Paginator_Exception); $this->assertEquals('Iterator must implement Countable', $e->getMessage()); } } /** * @group ZF-4151 */ public function testDoesNotThrowOutOfBoundsExceptionIfIteratorIsEmpty() { $this->_paginator = Zend_Paginator::factory(new ArrayIterator(array())); $items = $this->_paginator->getCurrentItems(); try { foreach ($items as $item); } catch (OutOfBoundsException $e) { $this->fail('Empty iterator caused in an OutOfBoundsException'); } } /** * @group ZF-8084 */ public function testGetItemsSerializable() { $items = $this->_adapter->getItems(0, 1); $innerIterator = $items->getInnerIterator(); $items = unserialize(serialize($items)); $this->assertTrue( ($items->getInnerIterator() == $innerIterator), 'getItems has to be serializable to use caching'); } /** * @group ZF-4151 */ public function testEmptySet() { $iterator = new ArrayIterator(array()); $this->_adapter = new Zend_Paginator_Adapter_Iterator($iterator); $actual = $this->_adapter->getItems(0, 10); $this->assertEquals(array(), $actual); } }