1pub mod buffer;
15pub mod io;
16pub mod logic;
17pub mod motion;
18pub mod session;
19pub mod text;
20
21pub use buffer::{Edit, Pos, Selection, TextBuffer};
24pub use session::{BufferId, BufferKind, BufferMeta, BufferSummary, EditorSession};
25
26#[cfg(test)]
27mod tests {
28 use super::*;
29
30 #[test]
31 fn empty_buffer_has_one_line() {
32 let b = TextBuffer::new();
33 assert_eq!(b.len_lines(), 1);
34 assert_eq!(b.len_chars(), 0);
35 }
36
37 #[test]
38 fn insert_and_delete_selection_smoke() {
39 let mut b = TextBuffer::from_str("ab");
40
41 let sel = Selection::empty(Pos::new(0, 2));
42 let new_cursor = b.insert(sel.cursor, "c");
43 assert_eq!(b.to_string(), "abc");
44 assert_eq!(new_cursor, Pos::new(0, 3));
45
46 let sel2 = Selection::new(Pos::new(0, 1), Pos::new(0, 2));
47 let (cur, did) = b.delete_selection(sel2);
48 assert!(did);
49 assert_eq!(cur, Pos::new(0, 1));
50 assert_eq!(b.to_string(), "ac");
51 }
52}