1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| <?php declare(strict_types = 1);
namespace DesignPatterns\Behavioral\Iterator\Tests;
use DesignPatterns\Behavioral\Iterator\Book; use DesignPatterns\Behavioral\Iterator\BookList; use PHPUnit\Framework\TestCase;
class IteratorTest extends TestCase { public function testCanIterateOverBookList() { $bookList = new BookList(); $bookList->addBook(new Book('Learning PHP Design Patterns', 'William Sanders')); $bookList->addBook(new Book('Professional Php Design Patterns', 'Aaron Saray')); $bookList->addBook(new Book('Clean Code', 'Robert C. Martin'));
$books = [];
foreach ($bookList as $book) { $books[] = $book->getAuthorAndTitle(); }
$this->assertSame( [ 'Learning PHP Design Patterns by William Sanders', 'Professional Php Design Patterns by Aaron Saray', 'Clean Code by Robert C. Martin', ], $books ); }
public function testCanIterateOverBookListAfterRemovingBook() { $book = new Book('Clean Code', 'Robert C. Martin'); $book2 = new Book('Professional Php Design Patterns', 'Aaron Saray');
$bookList = new BookList(); $bookList->addBook($book); $bookList->addBook($book2); $bookList->removeBook($book);
$books = []; foreach ($bookList as $book) { $books[] = $book->getAuthorAndTitle(); }
$this->assertSame( ['Professional Php Design Patterns by Aaron Saray'], $books ); }
public function testCanAddBookToList() { $book = new Book('Clean Code', 'Robert C. Martin');
$bookList = new BookList(); $bookList->addBook($book);
$this->assertCount(1, $bookList); }
public function testCanRemoveBookFromList() { $book = new Book('Clean Code', 'Robert C. Martin');
$bookList = new BookList(); $bookList->addBook($book); $bookList->removeBook($book);
$this->assertCount(0, $bookList); } }
|