main.rs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. use lib_ot::core::{DocumentTree, NodeData, TransactionBuilder};
  2. use std::collections::HashMap;
  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(
  21. &vec![0].into(),
  22. HashMap::from([("subtype".into(), Some("bullet-list".into()))]),
  23. );
  24. let transaction = tb.finalize();
  25. document.apply(transaction);
  26. let mut tb = TransactionBuilder::new(&document);
  27. tb.delete_node(&vec![0].into());
  28. let transaction = tb.finalize();
  29. document.apply(transaction);
  30. assert!(document.node_at_path(&vec![0].into()).is_none());
  31. }
  32. #[test]
  33. fn test_transform_paths() {
  34. let mut document = DocumentTree::new();
  35. let transaction = {
  36. let mut tb = TransactionBuilder::new(&document);
  37. tb.insert_nodes(&vec![0].into(), &vec![NodeData::new("text")]);
  38. tb.insert_nodes(&vec![1].into(), &vec![NodeData::new("text")]);
  39. tb.insert_nodes(&vec![2].into(), &vec![NodeData::new("text")]);
  40. tb.finalize()
  41. };
  42. document.apply(transaction);
  43. let transaction = {
  44. let mut tb = TransactionBuilder::new(&document);
  45. tb.insert_nodes(&vec![1].into(), &vec![NodeData::new("text")]);
  46. tb.finalize()
  47. };
  48. document.apply(transaction);
  49. }