1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#![crate_name = "simple_csv"]
#![cfg_attr(all(test, feature = "nightly"), feature(test))]

pub use reader::SimpleCsvReader;
pub use reader::SimpleCsvReaderOptions;

pub use writer::SimpleCsvWriter;
pub use writer::SimpleCsvWriterOptions;
pub use writer::NewlineType;


pub mod reader;
pub mod writer;

#[cfg(test)]
mod tests {
    use std::default::Default;
    use super::*;

    #[test]
    fn reader_and_writer_test() {
        let data = vec![
            vec!["1".to_string(),"2\r\n".to_string(),"3".to_string()],
            vec!["4".to_string(),"5\"".to_string(),"6".to_string()]];
        let mut writer = SimpleCsvWriter::new(Vec::new());
        let _ = writer.write_all(&*data);

        let written_data = writer.as_inner();

        let mut reader = SimpleCsvReader::new(&*written_data);
        assert_eq!(reader.next_row().unwrap().unwrap(), &*data[0]);
        assert_eq!(reader.next_row().unwrap().unwrap(), &*data[1]);
        assert!(reader.next_row().is_none());

    }

    #[test]
    fn reader_and_writer_custom_delimiter_test() {
        let data = vec![
            vec!["1".to_string(),"2\r\n".to_string(),"3".to_string()],
            vec!["4".to_string(),"5\"".to_string(),"6".to_string()]];

        let mut writer_options: SimpleCsvWriterOptions = Default::default();
        writer_options.delimiter = '#';

        let mut writer = SimpleCsvWriter::with_options(Vec::new(),writer_options);
        let _ = writer.write_all(&*data);

        let written_data = writer.as_inner();

        let mut reader_options: SimpleCsvReaderOptions = Default::default();
        reader_options.delimiter = '#';

        let mut reader = SimpleCsvReader::with_options(&*written_data, reader_options);
        assert_eq!(reader.next_row().unwrap().unwrap(), &*data[0]);
        assert_eq!(reader.next_row().unwrap().unwrap(), &*data[1]);
        assert!(reader.next_row().is_none());

    }
}