Package nl.siegmann.epublib.epub

Source Code of nl.siegmann.epublib.epub.EpubWriterTest

package nl.siegmann.epublib.epub;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import nl.siegmann.epublib.domain.Author;
import nl.siegmann.epublib.domain.Book;
import nl.siegmann.epublib.domain.GuideReference;
import nl.siegmann.epublib.domain.Identifier;
import nl.siegmann.epublib.domain.Resource;
import nl.siegmann.epublib.domain.TOCReference;
import nl.siegmann.epublib.util.CollectionUtil;

import org.junit.Assert;
import org.junit.Test;

public class EpubWriterTest {

  @Test
  public void testBook1() throws IOException {
    // create test book
    Book book = createTestBook();
   
    // write book to byte[]
    byte[] bookData = writeBookToByteArray(book);
      FileOutputStream fileOutputStream = new FileOutputStream("foo.zip");
      fileOutputStream.write(bookData);
      fileOutputStream.flush();
      fileOutputStream.close();
    Assert.assertNotNull(bookData);
    Assert.assertTrue(bookData.length > 0);
   
    // read book from byte[]
    Book readBook = new EpubReader().readEpub(new ByteArrayInputStream(bookData));
   
    // assert book values are correct
    Assert.assertEquals(book.getMetadata().getTitles(), readBook.getMetadata().getTitles());
    Assert.assertEquals(Identifier.Scheme.ISBN, CollectionUtil.first(readBook.getMetadata().getIdentifiers()).getScheme());
    Assert.assertEquals(CollectionUtil.first(book.getMetadata().getIdentifiers()).getValue(), CollectionUtil.first(readBook.getMetadata().getIdentifiers()).getValue());
    Assert.assertEquals(CollectionUtil.first(book.getMetadata().getAuthors()), CollectionUtil.first(readBook.getMetadata().getAuthors()));
    Assert.assertEquals(1, readBook.getGuide().getGuideReferencesByType(GuideReference.COVER).size());
    Assert.assertEquals(5, readBook.getSpine().size());
    Assert.assertNotNull(book.getCoverPage());
    Assert.assertNotNull(book.getCoverImage());
    Assert.assertEquals(4, readBook.getTableOfContents().size());
     
  }
 
  /**
   * Test for a very old bug where epublib would throw a NullPointerException when writing a book with a cover that has no id.
   * @throws IOException
   * @throws FileNotFoundException
   *
   */
  public void testWritingBookWithCoverWithNullId() throws FileNotFoundException, IOException {
    Book book = new Book();
      book.getMetadata().addTitle("Epub test book 1");
      book.getMetadata().addAuthor(new Author("Joe", "Tester"));
      InputStream is = this.getClass().getResourceAsStream("/book1/cover.png");
      book.setCoverImage(new Resource(is, "cover.png"));
      // Add Chapter 1
      InputStream is1 = this.getClass().getResourceAsStream("/book1/chapter1.html");
      book.addSection("Introduction", new Resource(is1, "chapter1.html"));
 
      EpubWriter epubWriter = new EpubWriter();
      epubWriter.write(book, new FileOutputStream("test1_book1.epub"));
  }
 
  private Book createTestBook() throws IOException {
    Book book = new Book();
   
    book.getMetadata().addTitle("Epublib test book 1");
    book.getMetadata().addTitle("test2");
   
    book.getMetadata().addIdentifier(new Identifier(Identifier.Scheme.ISBN, "987654321"));
    book.getMetadata().addAuthor(new Author("Joe", "Tester"));
    book.setCoverPage(new Resource(this.getClass().getResourceAsStream("/book1/cover.html"), "cover.html"));
    book.setCoverImage(new Resource(this.getClass().getResourceAsStream("/book1/cover.png"), "cover.png"));
    book.addSection("Chapter 1", new Resource(this.getClass().getResourceAsStream("/book1/chapter1.html"), "chapter1.html"));
    book.addResource(new Resource(this.getClass().getResourceAsStream("/book1/book1.css"), "book1.css"));
    TOCReference chapter2 = book.addSection("Second chapter", new Resource(this.getClass().getResourceAsStream("/book1/chapter2.html"), "chapter2.html"));
    book.addResource(new Resource(this.getClass().getResourceAsStream("/book1/flowers_320x240.jpg"), "flowers.jpg"));
    book.addSection(chapter2, "Chapter 2 section 1", new Resource(this.getClass().getResourceAsStream("/book1/chapter2_1.html"), "chapter2_1.html"));
    book.addSection("Chapter 3", new Resource(this.getClass().getResourceAsStream("/book1/chapter3.html"), "chapter3.html"));
    return book;
  }
 

  private byte[] writeBookToByteArray(Book book) throws IOException {
    EpubWriter epubWriter = new EpubWriter();

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    epubWriter.write(book, out);
    return out.toByteArray();
  }
//
//    public static void writeEpub(BookDTO dto) throws IOException{
//          Book book = new Book();
//        
//          Resource coverImg = new Resource(new FileInputStream(ResourceBundle.getBundle("info.pxdev.pfi.webclient.resources.Config").getString("COVER_DIR")+dto.getCoverFileName()),dto.getCoverFileName());
//                
//          book.getMetadata().addTitle(dto.getTitle());
//        
//          if(dto.getIdentifier().getType().getName().equals("ISBN"))
//              book.getMetadata().addIdentifier(new Identifier(Identifier.Scheme.ISBN, dto.getIdentifier().getIdentifier()));
//          else
//              book.getMetadata().addIdentifier(new Identifier(Identifier.Scheme.UUID, dto.getIdentifier().getIdentifier()));
//        
//          book.getMetadata().addAuthor(new Author(dto.getCreator().getName(), dto.getCreator().getLastName()));
//          book.getMetadata().addPublisher(dto.getPublisher());
//          book.getMetadata().addDate(new Date(dto.getLastModified()));
//          book.getMetadata().addDescription(dto.getDescription());
//          book.getMetadata().addType("TEXT");
//          book.getMetadata().setLanguage(dto.getLanguage());
//          book.getMetadata().setCoverImage(coverImg);
//          book.getMetadata().setFormat(MediatypeService.EPUB.getName());
//        
//          for(BookSubCategoryDTO subject : dto.getSubjects()){
//              book.getMetadata().getSubjects().add(subject.getName());  
//          }
//          for(BookContributorDTO contrib : dto.getContributors()){
//              Author contributor = new Author(contrib.getName(), contrib.getLastName());
//              contributor.setRelator(Relator.byCode(contrib.getType().getShortName()));
//              book.getMetadata().addContributor(contributor);
//          }
//        
//        
//          book.setCoverImage(coverImg);
//          for(BookChapterDTO chapter : dto.getChapters()){
//              Resource aux = new Resource(HTMLGenerator.generateChapterHtmlStream(dto,chapter), "chapter"+chapter.getNumber()+".html");
//              book.addSection(chapter.getTitle(), aux );
//          }
//        
//          EpubWriter writer = new EpubWriter();
//          FileOutputStream output = new FileOutputStream(ResourceBundle.getBundle("info.pxdev.pfi.webclient.resources.Config").getString("HTML_CHAPTERS")+dto.getId_book()+"\\test.epub");
//        
//          try {
//              writer.write(book, output);
//          } catch (XMLStreamException e) {
//              // TODO Auto-generated catch block
//              e.printStackTrace();
//          } catch (FactoryConfigurationError e) {
//              // TODO Auto-generated catch block
//              e.printStackTrace();
//          }
//      }
}
TOP

Related Classes of nl.siegmann.epublib.epub.EpubWriterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.