[go: up one dir, main page]

epub 2.1.4

Library to support the reading of epub files.
Documentation
use epub::archive::EpubArchive;
use std::fs;
use std::io::Write;

#[test]
fn archive_open() {
    let archive = EpubArchive::new("test.epub");
    assert!(archive.is_ok());
    let archive = archive.unwrap();
    assert_eq!("test.epub", archive.path.display().to_string());
    assert_eq!(32, archive.files.len());
}

#[test]
fn archive_entry() {
    let archive = EpubArchive::new("test.epub");
    assert!(archive.is_ok());
    let mut archive = archive.unwrap();
    let content = archive.get_entry("META-INF/container.xml");
    assert!(content.is_ok());
}

#[test]
fn archive_entry_percent_encoding() {
    let archive = EpubArchive::new("test.epub");
    assert!(archive.is_ok());
    let mut archive = archive.unwrap();
    let content = archive.get_entry("a%20%25%20encoded%20item.xml");
    assert!(content.is_ok());
    let content = archive.get_entry("a%20normal%20item.xml");
    assert!(content.is_ok());
}

#[test]
fn archive_root_file() {
    let archive = EpubArchive::new("test.epub");
    assert!(archive.is_ok());
    let mut archive = archive.unwrap();
    let content = archive.get_entry("META-INF/container.xml");
    let root = archive.get_container_file();
    assert!(content.is_ok() && root.is_ok());
    assert_eq!(content.unwrap(), root.unwrap());
}

#[test]
#[ignore]
fn archive_bin_entry() {
    let archive = EpubArchive::new("test.epub");
    assert!(archive.is_ok());
    let mut archive = archive.unwrap();
    let content = archive.get_entry("OEBPS/Images/portada.png");
    assert!(content.is_ok());

    let content = content.unwrap();
    let f = fs::File::create("cover.png");
    assert!(f.is_ok());
    let mut f = f.unwrap();
    let resp = f.write_all(&content);
    assert!(resp.is_ok());
}