<?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'));
}
}