my fork of dmp
Diffstat (limited to 'tests/test.rs')
| -rw-r--r-- | tests/test.rs | 65 |
1 files changed, 63 insertions, 2 deletions
diff --git a/tests/test.rs b/tests/test.rs index e4dc6a6..a05ee1c 100644 --- a/tests/test.rs +++ b/tests/test.rs @@ -678,6 +678,35 @@ fn test_diff_delta() -> Result<(), Error> { // Generates error (19 != 18). assert!(DiffMatchPatch::from_delta(&txt_old[1..], &delta).is_err()); + let diffs = vec![ + Diff::equal(&"jump".chars().collect::<Vec<_>>()[..]), + Diff::delete(&['s']), + Diff::insert(&['e', 'd']), + Diff::equal(&" over ".chars().collect::<Vec<_>>()[..]), + Diff::delete(&"the".chars().collect::<Vec<_>>()[..]), + Diff::insert(&['a']), + Diff::equal(&" lazy".chars().collect::<Vec<_>>()[..]), + Diff::insert(&"old dog".chars().collect::<Vec<_>>()[..]), + ]; + let txt_old = &"jumps over the lazy".chars().collect::<Vec<_>>()[..]; + assert_eq!(txt_old, DiffMatchPatch::diff_text_old(&diffs)); + + let delta = DiffMatchPatch::to_delta(&diffs); + assert_eq!( + &"=4\t-1\t+ed\t=6\t-3\t+a\t=5\t+old dog" + .chars() + .collect::<Vec<_>>()[..], + &delta + ); + // Convert delta string into a diff. + assert_eq!(diffs, DiffMatchPatch::from_delta(txt_old, &delta)?); + + // Generates error (19 != 20). + assert!(DiffMatchPatch::from_delta(&[txt_old, &['+']].concat()[..], &delta).is_err()); + + // Generates error (19 != 18). + assert!(DiffMatchPatch::from_delta(&txt_old[1..], &delta).is_err()); + // Test deltas with special characters. let diffs = vec![ Diff::equal("\u{0680} \x00 \t %".as_bytes()), @@ -692,6 +721,27 @@ fn test_diff_delta() -> Result<(), Error> { // Convert delta string into a diff. assert_eq!(&diffs, &DiffMatchPatch::from_delta(&txt_old, &delta)?); + let diffs = vec![ + Diff::equal(&"\u{0680} \x00 \t %".chars().collect::<Vec<_>>()[..]), + Diff::delete(&"\u{0681} \x01 \n ^".chars().collect::<Vec<_>>()[..]), + Diff::insert(&"\u{0682} \x02 \\ |".chars().collect::<Vec<_>>()[..]), + ]; + let txt_old = DiffMatchPatch::diff_text_old(&diffs); + assert_eq!( + &"\u{0680} \x00 \t %\u{0681} \x01 \n ^" + .chars() + .collect::<Vec<_>>()[..], + txt_old + ); + let delta = DiffMatchPatch::to_delta(&diffs); + + assert_eq!( + &"=7\t-7\t+%DA%82 %02 %5C %7C".chars().collect::<Vec<_>>()[..], + &delta[..] + ); + // Convert delta string into a diff. + assert_eq!(&diffs, &DiffMatchPatch::from_delta(&txt_old, &delta)?); + // Verify pool of unchanged characters. let diffs = vec![Diff::insert( "A-Z a-z 0-9 - _ . ! ~ * ' ( ) ; / ? : @ & = + $ , # ".as_bytes(), @@ -702,14 +752,25 @@ fn test_diff_delta() -> Result<(), Error> { std::str::from_utf8(&txt_new).unwrap() ); + let diffs = vec![Diff::insert( + &"A-Z a-z 0-9 - _ . ! ~ * ' ( ) ; / ? : @ & = + $ , # " + .chars() + .collect::<Vec<_>>()[..], + )]; + let txt_new = DiffMatchPatch::diff_text_new(&diffs); + assert_eq!( + "A-Z a-z 0-9 - _ . ! ~ * \' ( ) ; / ? : @ & = + $ , # ", + &txt_new.iter().collect::<String>() + ); + let delta = DiffMatchPatch::to_delta(&diffs); assert_eq!( "+A-Z a-z 0-9 - _ . ! ~ * \' ( ) ; / ? : @ & = + $ , # ", - std::str::from_utf8(&delta).unwrap() + &delta.iter().collect::<String>() ); // Convert delta string into a diff. - assert_eq!(diffs, DiffMatchPatch::from_delta("".as_bytes(), &delta)?); + assert_eq!(diffs, DiffMatchPatch::from_delta(&[], &delta)?); Ok(()) } |