test.rs 4.3 KB

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