Implement OpenFile command
This commit is contained in:
parent
69d87ef680
commit
f33d51f931
|
|
@ -2,8 +2,8 @@ use std::path::PathBuf;
|
|||
|
||||
use crate::{Point, TextBuffer};
|
||||
|
||||
mod io;
|
||||
mod command;
|
||||
mod io;
|
||||
pub use command::{Command, Movement, Unit};
|
||||
|
||||
#[derive(Default)]
|
||||
|
|
@ -64,3 +64,47 @@ impl EditorBuffer {
|
|||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
use std::io::{Read, Seek, SeekFrom, Write};
|
||||
use tempfile::NamedTempFile;
|
||||
|
||||
fn create_simple_test_file() -> NamedTempFile {
|
||||
let inner = || {
|
||||
let mut file = NamedTempFile::new()?;
|
||||
writeln!(file, "Messe ocus Pangur Bán,")?;
|
||||
writeln!(file, "cechtar nathar fria saindan")?;
|
||||
writeln!(file, "bíth a menmasam fri seilgg")?;
|
||||
writeln!(file, "mu menma céin im saincheirdd.")?;
|
||||
writeln!(file)?;
|
||||
writeln!(file, "Caraimse fos ferr cach clú")?;
|
||||
writeln!(file, "oc mu lebran leir ingn")?;
|
||||
writeln!(file, "ni foirmtech frimm Pangur Bá")?;
|
||||
writeln!(file, "caraid cesin a maccdán.")?;
|
||||
writeln!(file)?;
|
||||
writeln!(file, "Orubiam scél cen scís")?;
|
||||
writeln!(file, "innar tegdais ar noendís")?;
|
||||
writeln!(file, "taithiunn dichrichide clius")?;
|
||||
writeln!(file, "ni fristarddam arnáthius.")?;
|
||||
file.seek(SeekFrom::Start(0))?;
|
||||
Ok::<_, std::io::Error>(file)
|
||||
};
|
||||
inner().expect("Creating temporary file")
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn open_file_loads_file_contents() {
|
||||
let mut test_file = create_simple_test_file();
|
||||
let mut expected_contents = String::new();
|
||||
test_file
|
||||
.read_to_string(&mut expected_contents)
|
||||
.expect("Reading text file");
|
||||
let mut target = EditorBuffer::new();
|
||||
target.execute(Command::OpenFile(test_file.path().into()));
|
||||
let found_contents: String = target.buffer.iter_chars().collect();
|
||||
assert_eq!(expected_contents, found_contents);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue