diff options
Diffstat (limited to 'src')
| -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); +} | 
