]> git.lizzy.rs Git - rust.git/commitdiff
add two more unit tests for text_edit
authorMoritz Vetter <mv@3yourmind.com>
Sun, 27 Feb 2022 01:11:56 +0000 (02:11 +0100)
committerMoritz Vetter <mv@3yourmind.com>
Sun, 27 Feb 2022 01:27:44 +0000 (02:27 +0100)
crates/text_edit/src/lib.rs

index f9d3ff9b07f523bf4bd4a126cbd1bba058165fc1..19c96d34c5753d7110790225380aab8299c86db0 100644 (file)
@@ -198,16 +198,44 @@ fn check_disjoint_and_sort(indels: &mut [impl std::borrow::Borrow<Indel>]) -> 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());
+    }
+}