bookList = new BookList(); $this->bookList->addBook(new Book('Learning PHP Design Patterns', 'William Sanders')); $this->bookList->addBook(new Book('Professional Php Design Patterns', 'Aaron Saray')); $this->bookList->addBook(new Book('Clean Code', 'Robert C. Martin')); } public function expectedAuthors() { return array( array( array( 'Learning PHP Design Patterns by William Sanders', 'Professional Php Design Patterns by Aaron Saray', 'Clean Code by Robert C. Martin' ) ), ); } /** * @dataProvider expectedAuthors */ public function testUseAIteratorAndValidateAuthors($expected) { $iterator = new BookListIterator($this->bookList); while ($iterator->valid()) { $expectedBook = array_shift($expected); $this->assertEquals($expectedBook, $iterator->current()->getAuthorAndTitle()); $iterator->next(); } } /** * @dataProvider expectedAuthors */ public function testUseAReverseIteratorAndValidateAuthors($expected) { $iterator = new BookListReverseIterator($this->bookList); while ($iterator->valid()) { $expectedBook = array_pop($expected); $this->assertEquals($expectedBook, $iterator->current()->getAuthorAndTitle()); $iterator->next(); } } }