Package nl.siegmann.epublib.epub

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

package nl.siegmann.epublib.epub;

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

import java.io.IOException;
import java.io.StringReader;

import nl.siegmann.epublib.domain.Identifier;
import nl.siegmann.epublib.domain.Metadata;

import org.junit.Assert;
import org.junit.Test;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class PackageDocumentMetadataReaderTest {
 
  @Test 
  public void test1() {
    try {
      Document document = EpubProcessorSupport.createDocumentBuilder().parse(PackageDocumentMetadataReader.class.getResourceAsStream("/opf/test2.opf"));
      Metadata metadata = PackageDocumentMetadataReader.readMetadata(document);
      assertEquals(1, metadata.getAuthors().size());
    } catch (Exception e) {
      e.printStackTrace();
      assertTrue(false);
    }
  }

  @Test 
    public void testReadsLanguage() {
        Metadata metadata = getMetadata("/opf/test_language.opf");
        assertEquals("fi", metadata.getLanguage());
    }

  @Test 
    public void testDefaultsToEnglish() {
        Metadata metadata = getMetadata("/opf/test_default_language.opf");
        assertEquals("en", metadata.getLanguage());
    }

    private Metadata getMetadata(String file) {
        try {
            Document document = EpubProcessorSupport.createDocumentBuilder().parse(PackageDocumentMetadataReader.class.getResourceAsStream(file));

            return PackageDocumentMetadataReader.readMetadata(document);
        } catch (Exception e) {
            e.printStackTrace();
            assertTrue(false);

            return null;
        }
    }
   
  @Test 
    public void test2() throws SAXException, IOException {
      // given
      String input = "<package version=\"2.0\" xmlns=\"http://www.idpf.org/2007/opf\" unique-identifier=\"BookId\">"
      + "<metadata xmlns=\"http://www.idpf.org/2007/opf\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:opf=\"http://www.idpf.org/2007/opf\">"
            + "<dc:title>Three Men in a Boat</dc:title>"
            + "<dc:creator opf:role=\"aut\" opf:file-as=\"Jerome, Jerome K.\">Jerome K. Jerome</dc:creator>"
            + "<dc:creator opf:role=\"ill\" opf:file-as=\"Frederics, A.\">A. Frederics</dc:creator>"
            + "<dc:language>en</dc:language>"
            + "<dc:date opf:event=\"publication\">1889</dc:date>"
            + "<dc:date opf:event=\"creation\">2009-05-17</dc:date>"
            + "<dc:identifier opf:scheme=\"URI\" id=\"BookId\">zelda@mobileread.com:2010040720</dc:identifier>"
            + "<dc:contributor opf:role=\"bkp\">zelda pinwheel</dc:contributor>"
            + "<dc:publisher>zelda pinwheel</dc:publisher>"
            + "<dc:rights>Public Domain</dc:rights>"
            + "<dc:type>Text</dc:type>"
            + "<dc:type>Image</dc:type>"
            + "<dc:subject>Travel</dc:subject>"
            + "<dc:subject>Humour</dc:subject>"
            + "<dc:description>Three Men in a Boat (To Say Nothing of the Dog), published in 1889, is a humorous account by Jerome K. Jerome of a boating holiday on the Thames between Kingston and Oxford. The book was initially intended to be a serious travel guide, with accounts of local history along the route, but the humorous elements took over to the point where the serious and somewhat sentimental passages seem a distraction to the comic novel. One of the most praised things about Three Men in a Boat is how undated it appears to modern readers, the jokes seem fresh and witty even today.</dc:description>"
            + "<meta name=\"cover\" content=\"cover_pic\" />"
            + "<meta name=\"calibre:rating\" content=\"8\"/>"
          + "</metadata>"
         + "</package>";

      // when
      Document metadataDocument = EpubProcessorSupport.createDocumentBuilder().parse(new InputSource(new StringReader(input)));
      Metadata metadata = PackageDocumentMetadataReader.readMetadata(metadataDocument);
     
      // then
      Assert.assertEquals("Three Men in a Boat", metadata.getFirstTitle());

      // test identifier
      Assert.assertNotNull(metadata.getIdentifiers());
      Assert.assertEquals(1, metadata.getIdentifiers().size());
      Identifier identifier = metadata.getIdentifiers().get(0);
      Assert.assertEquals("URI", identifier.getScheme());
      Assert.assertEquals("zelda@mobileread.com:2010040720", identifier.getValue());
     
      Assert.assertEquals("8", metadata.getMetaAttribute("calibre:rating"));
      Assert.assertEquals("cover_pic", metadata.getMetaAttribute("cover"));
    }
}
TOP

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

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.