diff options
| -rw-r--r-- | src/main.rs | 11 | ||||
| -rw-r--r-- | src/tests.rs | 20 |
2 files changed, 29 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs index 89deb49..d484e5e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ -use std::io::{self, BufRead, BufReader}; -use std::fs::File; +use std::io::{self, BufRead, BufReader, Write}; +use std::fs::{File, OpenOptions}; +use std::path::Path; #[cfg(test)] mod tests; @@ -49,6 +50,12 @@ impl Alias { } } + fn write_to_file<P: AsRef<Path>>(&self, file: P) -> Result<(), io::Error> { + let mut f = try!(OpenOptions::new().write(true).open(file)); + try!(f.write_all(self.to_string().as_bytes())); + Ok(()) + } + fn update_alias_id(&mut self, similar_aliases: Vec<String>) { if !similar_aliases.is_empty() { self.alias = format!("{}-{}", self.alias, similar_aliases.len() + 1); diff --git a/src/tests.rs b/src/tests.rs index b3a172c..1034bc6 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -1,3 +1,6 @@ +use std::fs::{self, File}; +use std::io::Read; + use super::{Alias, AliasSearchError, find_alias_in_file}; #[test] @@ -120,3 +123,20 @@ fn update_alias_id_increments_alias() { assert_eq!("hooves-derpy-5", &alias.alias); } + + +#[test] +fn alias_write_to_file_must_write_given_alias_to_file() { + let alias = update_alias_id_sample_alias(); + + let test_file = "./testdata/write_to_file"; + File::create(test_file).unwrap(); + alias.write_to_file(test_file).unwrap(); + + let mut f = File::open(test_file).unwrap(); + let mut file_contents = String::new(); + f.read_to_string(&mut file_contents).unwrap(); + fs::remove_file(test_file).unwrap(); + + assert_eq!(alias.to_string(), file_contents); +} |
