1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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);
- }
|