191 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			191 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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'));
 | |
|     }
 | |
| }
 |