main.rs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. use std::collections::HashMap;
  2. use lib_ot::core::{DocumentTree, NodeData, TransactionBuilder};
  3. #[test]
  4. fn main() {
  5. // Create a new arena
  6. let _document = DocumentTree::new();
  7. }
  8. #[test]
  9. fn test_documents() {
  10. let mut document = DocumentTree::new();
  11. let mut tb = TransactionBuilder::new(&document);
  12. tb.insert_nodes(&vec![0].into(), &vec![NodeData::new("text")]);
  13. let transaction = tb.finalize();
  14. document.apply(transaction);
  15. assert!(document.node_at_path(&vec![0].into()).is_some());
  16. let node = document.node_at_path(&vec![0].into()).unwrap();
  17. let node_data = document.arena.get(node).unwrap().get();
  18. assert_eq!(node_data.node_type, "text");
  19. let mut tb = TransactionBuilder::new(&document);
  20. tb.update_attributes(&vec![0].into(), HashMap::from([
  21. ("subtype".into(), Some("bullet-list".into())),
  22. ]));
  23. let transaction = tb.finalize();
  24. document.apply(transaction);
  25. let mut tb = TransactionBuilder::new(&document);
  26. tb.delete_node(&vec![0].into());
  27. let transaction = tb.finalize();
  28. document.apply(transaction);
  29. assert!(document.node_at_path(&vec![0].into()).is_none());
  30. }