fixed_width 0.6.0

A fixed width data parser.
Documentation
use fixed_width::{LineBreak, Reader, Writer};
use std::{
    fs::{self, File},
    io::Write,
    result,
};

#[test]
fn read_from_file() {
    let mut rdr = Reader::from_file("./tests/data/sample_file.txt")
        .unwrap()
        .width(16);

    let rows = rdr
        .string_reader()
        .filter_map(result::Result::ok)
        .collect::<Vec<String>>();

    assert_eq!(rows.len(), 3);

    for row in rows {
        assert_eq!("1111222233334444", row);
    }
}

#[test]
fn read_from_file_with_newlines() {
    let mut rdr = Reader::from_file("./tests/data/sample_file_newlines.txt")
        .unwrap()
        .width(16)
        .linebreak(LineBreak::Newline);

    let rows = rdr
        .string_reader()
        .filter_map(result::Result::ok)
        .collect::<Vec<String>>();

    assert_eq!(rows.len(), 3);

    for row in rows {
        assert_eq!("1111222233334444", row);
    }
}

#[test]
fn write_to_file() {
    let path = "./tests/data/sample_write.txt";
    let records = [
        "1111222233334444".to_string(),
        "1111222233334444".to_string(),
        "1111222233334444".to_string(),
    ];

    let f = File::create(path).unwrap();

    let mut wrtr = Writer::from_writer(f);
    wrtr.write_iter(records.iter()).unwrap();
    wrtr.flush().unwrap();

    let expected = "111122223333444411112222333344441111222233334444";
    let s = fs::read_to_string(path).unwrap();

    fs::remove_file(path).unwrap();
    assert_eq!(expected, s);
}

#[test]
fn write_to_file_with_newlines() {
    let path = "./tests/data/sample_write_newlines.txt";
    let records = [
        "1111222233334444".to_string(),
        "1111222233334444".to_string(),
        "1111222233334444".to_string(),
    ];

    let f = File::create(path).unwrap();

    let mut wrtr = Writer::from_writer(f).linebreak(LineBreak::Newline);
    wrtr.write_iter(records.iter()).unwrap();
    wrtr.flush().unwrap();

    let expected = "1111222233334444\n1111222233334444\n1111222233334444";
    let s = fs::read_to_string(path).unwrap();

    fs::remove_file(path).unwrap();
    assert_eq!(expected, s);
}