file_api 0.6.4

Library to abstract read. Based on prefix URL, it select the adapted reader (HTTP or local file system).
Documentation
extern crate file_api;

use file_api::file_reader::FileReader;
use file_api::reader::Reader;

use std::io::{Read, Seek, SeekFrom};

#[test]
fn file_exists() {
    let filename = "tests/sample_data_file.txt".to_string();
    assert!(file_api::exists(&filename) == true);

    let filename = "tests/bad_filename.txt".to_string();
    assert!(file_api::exists(&filename) == false);
}

#[test]
fn file_size() {
    let filename = "tests/sample_data_file.txt".to_string();
    let mut reader = FileReader::new();
    let _res = reader.open(&filename);

    let size = reader.get_size().unwrap();
    assert_eq!(size, 20);
}

#[test]
fn file_read_data() {
    let filename = "tests/sample_data_file.txt".to_string();
    let mut reader = FileReader::new();
    let _res = reader.open(&filename);

    let position = reader.get_position().unwrap();
    assert_eq!(position, 0);

    let mut data = [0; 4];
    reader.read(&mut data).unwrap();
    assert_eq!(data.len(), 4);

    let data_str = std::str::from_utf8(&data).unwrap();
    assert!(data_str == "some".to_string());

    let position = reader.get_position().unwrap();
    assert_eq!(position, 4);

    let mut data = [0; 4];
    reader.read(&mut data).unwrap();
    assert_eq!(data.len(), 4);

    let data_str = std::str::from_utf8(&data).unwrap();
    assert!(data_str == "data".to_string());

    let position = reader.get_position().unwrap();
    assert_eq!(position, 8);
}

#[test]
fn file_seek() {
    let filename = "tests/sample_data_file.txt".to_string();
    let mut reader = FileReader::new();
    let _res = reader.open(&filename);

    let position = reader.get_position().unwrap();
    assert_eq!(position, 0);

    let position = reader.seek(SeekFrom::Current(4)).unwrap();
    assert_eq!(position, 4);
}