diff options
Diffstat (limited to 'library/epub-meta/test/test.phpunit.php')
-rw-r--r-- | library/epub-meta/test/test.phpunit.php | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/library/epub-meta/test/test.phpunit.php b/library/epub-meta/test/test.phpunit.php new file mode 100644 index 000000000..88a9aa914 --- /dev/null +++ b/library/epub-meta/test/test.phpunit.php @@ -0,0 +1,190 @@ +<?php + +require '../epub.php'; + + +class EPubTest extends PHPUnit_Framework_TestCase { + + protected $epub; + + protected function setUp(){ + // sometime I might have accidentally broken the test file + if(filesize('test.epub') != 768780){ + die('test.epub has wrong size, make sure it\'s unmodified'); + } + + // we work on a copy to test saving + if(!copy('test.epub','test.copy.epub')){ + die('failed to create copy of the test book'); + } + + $this->epub = new EPub('test.copy.epub'); + } + + protected function tearDown(){ + unlink('test.copy.epub'); + } + + public function testAuthors(){ + // read curent value + $this->assertEquals( + $this->epub->Authors(), + array('Shakespeare, William' => 'William Shakespeare') + ); + + // remove value with string + $this->assertEquals( + $this->epub->Authors(''), + array() + ); + + // set single value by String + + $this->assertEquals( + $this->epub->Authors('John Doe'), + array('John Doe' => 'John Doe') + ); + + // set single value by indexed array + $this->assertEquals( + $this->epub->Authors(array('John Doe')), + array('John Doe' => 'John Doe') + ); + + // remove value with array + $this->assertEquals( + $this->epub->Authors(array()), + array() + ); + + // set single value by associative array + $this->assertEquals( + $this->epub->Authors(array('Doe, John' => 'John Doe')), + array('Doe, John' => 'John Doe') + ); + + // set multi value by string + $this->assertEquals( + $this->epub->Authors('John Doe, Jane Smith'), + array('John Doe' => 'John Doe', 'Jane Smith' => 'Jane Smith') + ); + + // set multi value by indexed array + $this->assertEquals( + $this->epub->Authors(array('John Doe', 'Jane Smith')), + array('John Doe' => 'John Doe', 'Jane Smith' => 'Jane Smith') + ); + + // set multi value by associative array + $this->assertEquals( + $this->epub->Authors(array('Doe, John' => 'John Doe', 'Smith, Jane' => 'Jane Smith')), + array('Doe, John' => 'John Doe', 'Smith, Jane' => 'Jane Smith') + ); + + // check escaping + $this->assertEquals( + $this->epub->Authors(array('Doe, John ' => 'John Doe ')), + array('Doe, John ' => 'John Doe ') + ); + } + + public function testTitle(){ + // get current value + $this->assertEquals( + $this->epub->Title(), + 'Romeo and Juliet' + ); + + // delete current value + $this->assertEquals( + $this->epub->Title(''), + '' + ); + + // get current value + $this->assertEquals( + $this->epub->Title(), + '' + ); + + // set new value + $this->assertEquals( + $this->epub->Title('Foo Bar'), + 'Foo Bar' + ); + + // check escaping + $this->assertEquals( + $this->epub->Title('Foo Bar'), + 'Foo Bar' + ); + } + + public function testSubject(){ + // get current values + $this->assertEquals( + $this->epub->Subjects(), + array('Fiction','Drama','Romance') + ); + + // delete current values with String + $this->assertEquals( + $this->epub->Subjects(''), + array() + ); + + // set new values with String + $this->assertEquals( + $this->epub->Subjects('Fiction, Drama, Romance'), + array('Fiction','Drama','Romance') + ); + + // delete current values with Array + $this->assertEquals( + $this->epub->Subjects(array()), + array() + ); + + // set new values with array + $this->assertEquals( + $this->epub->Subjects(array('Fiction','Drama','Romance')), + array('Fiction','Drama','Romance') + ); + + // check escaping + $this->assertEquals( + $this->epub->Subjects(array('Fiction','Drama ','Romance')), + array('Fiction','Drama ','Romance') + ); + } + + + public function testCover(){ + // read current cover + $cover = $this->epub->Cover(); + $this->assertEquals($cover['mime'],'image/png'); + $this->assertEquals($cover['found'],'OPS/images/cover.png'); + $this->assertEquals(strlen($cover['data']), 657911); + + // delete cover + $cover = $this->epub->Cover(''); + $this->assertEquals($cover['mime'],'image/gif'); + $this->assertEquals($cover['found'],false); + $this->assertEquals(strlen($cover['data']), 42); + + // set new cover (will return a not-found as it's not yet saved) + $cover = $this->epub->Cover('test.jpg','image/jpeg'); + $this->assertEquals($cover['mime'],'image/jpeg'); + $this->assertEquals($cover['found'],'OPS/php-epub-meta-cover.img'); + $this->assertEquals(strlen($cover['data']), 0); + + // save + $this->epub->save(); + + // read now changed cover + $cover = $this->epub->Cover(); + $this->assertEquals($cover['mime'],'image/jpeg'); + $this->assertEquals($cover['found'],'OPS/php-epub-meta-cover.img'); + $this->assertEquals(strlen($cover['data']), filesize('test.jpg')); + } +} |