From ff59147d5377d3ab06cb0d675725da10534d94e9 Mon Sep 17 00:00:00 2001 From: Moritz Vetter Date: Sun, 27 Feb 2022 02:11:56 +0100 Subject: [PATCH] add two more unit tests for text_edit --- crates/text_edit/src/lib.rs | 54 ++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 13 deletions(-) diff --git a/crates/text_edit/src/lib.rs b/crates/text_edit/src/lib.rs index f9d3ff9b07f..19c96d34c57 100644 --- a/crates/text_edit/src/lib.rs +++ b/crates/text_edit/src/lib.rs @@ -198,16 +198,44 @@ fn check_disjoint_and_sort(indels: &mut [impl std::borrow::Borrow]) -> bo }) } -#[test] -fn test_apply() { - let mut text = "_11h1_2222_xx3333_4444_6666".to_string(); - let mut builder = TextEditBuilder::default(); - builder.replace(TextRange::new(3.into(), 4.into()), "1".to_string()); - builder.delete(TextRange::new(11.into(), 13.into())); - builder.insert(22.into(), "_5555".to_string()); - - let text_edit = builder.finish(); - text_edit.apply(&mut text); - - assert_eq!(text, "_1111_2222_3333_4444_5555_6666") -} \ No newline at end of file +#[cfg(test)] +mod tests { + use super::{TextEdit, TextEditBuilder, TextRange}; + + fn range(start: u32, end: u32) -> TextRange { + TextRange::new(start.into(), end.into()) + } + + #[test] + fn test_apply() { + let mut text = "_11h1_2222_xx3333_4444_6666".to_string(); + let mut builder = TextEditBuilder::default(); + builder.replace(range(3, 4), "1".to_string()); + builder.delete(range(11, 13)); + builder.insert(22.into(), "_5555".to_string()); + + let text_edit = builder.finish(); + text_edit.apply(&mut text); + + assert_eq!(text, "_1111_2222_3333_4444_5555_6666") + } + + #[test] + fn test_union() { + let mut edit1 = TextEdit::delete(range(7, 11)); + let mut builder = TextEditBuilder::default(); + builder.delete(range(1, 5)); + builder.delete(range(13, 17)); + + let edit2 = builder.finish(); + assert!(edit1.union(edit2).is_ok()); + assert_eq!(edit1.indels.len(), 3); + } + + #[test] + fn test_union_panics() { + let mut edit1 = TextEdit::delete(range(7, 11)); + let edit2 = TextEdit::delete(range(9, 13)); + assert!(edit1.union(edit2).is_err()); + } +} -- 2.44.0