use crate::node::script::NodeScript::{AssertNodeDelta, InsertNode, UpdateBody}; use crate::node::script::{edit_node_delta, NodeTest}; use lib_ot::core::NodeDataBuilder; use lib_ot::text_delta::DeltaTextOperationBuilder; #[test] fn operation_update_delta_test() { let mut test = NodeTest::new(); let initial_delta = DeltaTextOperationBuilder::new().build(); let new_delta = DeltaTextOperationBuilder::new() .retain(initial_delta.utf16_base_len) .insert("Hello, world") .build(); let (changeset, expected) = edit_node_delta(&initial_delta, new_delta); let node = NodeDataBuilder::new("text").insert_delta(initial_delta.clone()).build(); let scripts = vec![ InsertNode { path: 0.into(), node_data: node, rev_id: 1, }, UpdateBody { path: 0.into(), changeset: changeset.clone(), }, AssertNodeDelta { path: 0.into(), expected, }, UpdateBody { path: 0.into(), changeset: changeset.inverted(), }, AssertNodeDelta { path: 0.into(), expected: initial_delta, }, ]; test.run_scripts(scripts); }