package org.androiddaisyreader.model;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.Date;
import junit.framework.TestCase;
import org.androiddaisyreader.testutilities.SampleContentDaisy30;
public class OpfSpecificationTest extends TestCase {
private static final String PATH_EBOOK_30 = "/sdcard/files-used-for-testing/testfiles/Are_you_ready_minidaisy3";
private static final String OPF_NAME = "speechgen.opf";
protected void setUp() throws Exception {
super.setUp();
}
@SuppressWarnings("deprecation")
public void testUsingValidSampleContentDaisy30() throws IOException {
ByteArrayInputStream content = new ByteArrayInputStream(
(SampleContentDaisy30.simpleValidOpf).getBytes(Charset.forName("UTF-8")));
// This testcase must get title of daisybook, so we don't need bookcontext.
DaisyBook daisybook = OpfSpecification.readFromStream(content, null);
assertEquals("The Code Talkers", daisybook.getTitle());
assertEquals("Gretchen McBride", daisybook.getAuthor());
assertEquals("Pearson Scott Foresman", daisybook.getPublisher());
assertEquals(new Date(2008 - 1900, 5 - 1, 9), daisybook.getDate());
}
@SuppressWarnings("deprecation")
public void testReadFromPath() throws IOException {
BookContext bookContext = openBook();
InputStream contents = bookContext.getResource(OPF_NAME);
DaisyBook daisyBook = OpfSpecification.readFromStream(contents, bookContext);
assertEquals(2, daisyBook.sections.size());
assertEquals(2, daisyBook.getChildren().size());
assertEquals("Mini daisy 3", daisyBook.getTitle());
assertEquals("WikiHow", daisyBook.getAuthor());
assertEquals("DAISY India", daisyBook.getPublisher());
assertEquals(new Date(2009 - 1900, 4 - 1, 26), daisyBook.getDate());
}
private BookContext openBook(){
BookContext bookContext;
File directory = new File(PATH_EBOOK_30 + File.separator + OPF_NAME);
boolean isDirectory = directory.isDirectory();
if (isDirectory) {
bookContext = new FileSystemContext(PATH_EBOOK_30);
} else {
bookContext = new FileSystemContext(directory.getParent());
}
return bookContext;
}
}