aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main.rs11
-rw-r--r--src/tests.rs20
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);
+}