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()); } }