#[test] fn readme_basic() { use loro::ContainerTrait; use loro::{LoroDoc, LoroList, LoroText, LoroValue, ToJson}; use serde_json::json; let doc = LoroDoc::new(); let map = doc.get_map("map"); map.insert("key", "value").unwrap(); map.insert("true", true).unwrap(); map.insert("null", LoroValue::Null).unwrap(); map.insert("deleted", LoroValue::Null).unwrap(); map.delete("deleted").unwrap(); let list = map.insert_container("list", LoroList::new()).unwrap(); list.insert(0, "List").unwrap(); list.insert(1, 9).unwrap(); let old_text = LoroText::new(); old_text.insert(0, "Hello ").unwrap(); let text = map.insert_container("text", old_text.clone()).unwrap(); text.insert(6, "world!").unwrap(); assert_eq!( doc.get_deep_value().to_json_value(), json!({ "map": { "key": "value", "true": true, "null": null, "list": ["List", 9], "text": "Hello world!" } }) ); let new_text = old_text.get_attached().unwrap(); new_text.insert(0, "New ").unwrap(); assert_eq!( doc.get_deep_value().to_json_value(), json!({ "map": { "key": "value", "true": true, "null": null, "list": ["List", 9], "text": "New Hello world!" } }) ); } #[test] fn get_list_cursor_example() { use loro::LoroDoc; use loro_internal::cursor::Side; let doc = LoroDoc::new(); let list = doc.get_list("list"); list.insert(0, 0).unwrap(); let cursor = list.get_cursor(0, Side::Middle).unwrap(); assert_eq!(doc.get_cursor_pos(&cursor).unwrap().current.pos, 0); list.insert(0, 0).unwrap(); assert_eq!(doc.get_cursor_pos(&cursor).unwrap().current.pos, 1); list.insert(0, 0).unwrap(); list.insert(0, 0).unwrap(); assert_eq!(doc.get_cursor_pos(&cursor).unwrap().current.pos, 3); list.insert(4, 0).unwrap(); assert_eq!(doc.get_cursor_pos(&cursor).unwrap().current.pos, 3); }