test.rs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. use crate::node::script::NodeScript::*;
  2. use crate::node::script::NodeTest;
  3. use lib_ot::core::{Node, NodeAttributes, Path};
  4. #[test]
  5. fn node_insert_test() {
  6. let mut test = NodeTest::new();
  7. let inserted_node = Node::new("text");
  8. let path: Path = 0.into();
  9. let scripts = vec![
  10. InsertNode {
  11. path: path.clone(),
  12. node: inserted_node.clone(),
  13. },
  14. AssertNode {
  15. path,
  16. expected: Some(inserted_node),
  17. },
  18. ];
  19. test.run_scripts(scripts);
  20. }
  21. #[test]
  22. fn node_insert_node_with_children_test() {
  23. let mut test = NodeTest::new();
  24. let inserted_node = Node {
  25. note_type: "text".into(),
  26. attributes: NodeAttributes::new(),
  27. delta: None,
  28. children: vec![Node::new("image")],
  29. };
  30. let path: Path = 0.into();
  31. let scripts = vec![
  32. InsertNode {
  33. path: path.clone(),
  34. node: inserted_node.clone(),
  35. },
  36. AssertNode {
  37. path,
  38. expected: Some(inserted_node),
  39. },
  40. ];
  41. test.run_scripts(scripts);
  42. }
  43. #[test]
  44. fn node_insert_multi_nodes_test() {
  45. let mut test = NodeTest::new();
  46. let path_1: Path = 0.into();
  47. let node_1 = Node::new("text_1");
  48. let path_2: Path = 1.into();
  49. let node_2 = Node::new("text_2");
  50. let path_3: Path = 2.into();
  51. let node_3 = Node::new("text_3");
  52. let scripts = vec![
  53. InsertNode {
  54. path: path_1.clone(),
  55. node: node_1.clone(),
  56. },
  57. InsertNode {
  58. path: path_2.clone(),
  59. node: node_2.clone(),
  60. },
  61. InsertNode {
  62. path: path_3.clone(),
  63. node: node_3.clone(),
  64. },
  65. AssertNode {
  66. path: path_1,
  67. expected: Some(node_1),
  68. },
  69. AssertNode {
  70. path: path_2,
  71. expected: Some(node_2),
  72. },
  73. AssertNode {
  74. path: path_3,
  75. expected: Some(node_3),
  76. },
  77. ];
  78. test.run_scripts(scripts);
  79. }
  80. #[test]
  81. fn node_insert_node_in_ordered_nodes_test() {
  82. let mut test = NodeTest::new();
  83. let path_1: Path = 0.into();
  84. let node_1 = Node::new("text_1");
  85. let path_2: Path = 1.into();
  86. let node_2_1 = Node::new("text_2_1");
  87. let node_2_2 = Node::new("text_2_2");
  88. let path_3: Path = 2.into();
  89. let node_3 = Node::new("text_3");
  90. let path_4: Path = 3.into();
  91. let scripts = vec![
  92. InsertNode {
  93. path: path_1.clone(),
  94. node: node_1.clone(),
  95. },
  96. InsertNode {
  97. path: path_2.clone(),
  98. node: node_2_1.clone(),
  99. },
  100. InsertNode {
  101. path: path_3.clone(),
  102. node: node_3.clone(),
  103. },
  104. // 0:note_1 , 1: note_2_1, 2: note_3
  105. InsertNode {
  106. path: path_2.clone(),
  107. node: node_2_2.clone(),
  108. },
  109. // 0:note_1 , 1:note_2_2, 2: note_2_1, 3: note_3
  110. AssertNode {
  111. path: path_1,
  112. expected: Some(node_1),
  113. },
  114. AssertNode {
  115. path: path_2,
  116. expected: Some(node_2_2),
  117. },
  118. AssertNode {
  119. path: path_3,
  120. expected: Some(node_2_1),
  121. },
  122. AssertNode {
  123. path: path_4,
  124. expected: Some(node_3),
  125. },
  126. AssertNumberOfChildrenAtPath { path: None, len: 4 },
  127. ];
  128. test.run_scripts(scripts);
  129. }
  130. #[test]
  131. fn node_insert_with_attributes_test() {
  132. let mut test = NodeTest::new();
  133. let path: Path = 0.into();
  134. let mut inserted_node = Node::new("text");
  135. inserted_node.attributes.insert("bold", true);
  136. inserted_node.attributes.insert("underline", true);
  137. let scripts = vec![
  138. InsertNode {
  139. path: path.clone(),
  140. node: inserted_node.clone(),
  141. },
  142. InsertAttributes {
  143. path: path.clone(),
  144. attributes: inserted_node.attributes.clone(),
  145. },
  146. AssertNode {
  147. path,
  148. expected: Some(inserted_node),
  149. },
  150. ];
  151. test.run_scripts(scripts);
  152. }
  153. #[test]
  154. fn node_delete_test() {
  155. let mut test = NodeTest::new();
  156. let inserted_node = Node::new("text");
  157. let path: Path = 0.into();
  158. let scripts = vec![
  159. InsertNode {
  160. path: path.clone(),
  161. node: inserted_node.clone(),
  162. },
  163. DeleteNode { path: path.clone() },
  164. AssertNode { path, expected: None },
  165. ];
  166. test.run_scripts(scripts);
  167. }