reconcile/tests/wasm.rs
Andras Schmelczer e85eb485e8
Improve compact diff API (#24)
* Remove is_binary from API

* Format

* Rename file

* Test with more feature combinations

* Don't depend on serde for wasm

* Fix lint & tests

* Don't unwrap to MAX number

* Expose undiff to JS

* Add undiff tests

* Lint

* Change name
2025-11-16 15:43:19 +00:00

70 lines
1.9 KiB
Rust

#![cfg(feature = "wasm")]
use reconcile_text::{BuiltinTokenizer, CursorPosition, TextWithCursors, wasm::*};
use wasm_bindgen_test::*;
#[wasm_bindgen_test(unsupported = test)]
fn test_merge() {
let left = b"hello ";
let right = b"world";
let result = generic_reconcile(b"", left, right, BuiltinTokenizer::Word);
assert_eq!(result, b"hello world");
let left = b"\0binary";
let right = b"other";
let result = generic_reconcile(b"", left, right, BuiltinTokenizer::Word);
assert_eq!(result, right);
}
#[wasm_bindgen_test(unsupported = test)]
fn test_merge_text() {
let left = "hello ";
let right = "world";
let result = reconcile("", &left.into(), &right.into(), BuiltinTokenizer::Word).text();
assert_eq!(result, "hello world");
}
#[wasm_bindgen_test(unsupported = test)]
fn test_merge_text_with_cursors() {
let result = reconcile(
"hi",
&TextWithCursors::new("hi world".to_owned(), vec![]),
&TextWithCursors::new(
"hi".to_owned(),
vec![CursorPosition::new(0, 1), CursorPosition::new(1, 2)],
),
BuiltinTokenizer::Word,
);
assert_eq!(
result,
TextWithCursors::new(
"hi world".to_owned(),
vec![CursorPosition::new(0, 1), CursorPosition::new(1, 2)]
),
);
}
#[wasm_bindgen_test(unsupported = test)]
fn test_merge_binary() {
let left = [0, 1, 2];
let right = [3, 4, 5];
assert_eq!(
generic_reconcile(b"", &left, &right, BuiltinTokenizer::Word),
right
);
}
#[wasm_bindgen_test] // JsValue isn't supported outside of wasm
fn test_diff() {
let parent = "hello ";
let changed = "world";
let result = diff(parent, &changed.into(), BuiltinTokenizer::Word);
assert_eq!(result.len(), 2);
let first: i64 = result[0].clone().try_into().unwrap();
let second: String = result[1].clone().try_into().unwrap();
assert_eq!(first, -6);
assert_eq!(second, "world");
}