operation_compose_test.rs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. use lib_ot::core::{Changeset, NodeOperation};
  2. #[test]
  3. fn operation_insert_compose_delta_update_test() {
  4. let insert_operation = NodeOperation::Insert {
  5. path: 0.into(),
  6. nodes: vec![],
  7. };
  8. let update_operation = NodeOperation::Update {
  9. path: 0.into(),
  10. changeset: Changeset::Delta {
  11. delta: Default::default(),
  12. inverted: Default::default(),
  13. },
  14. };
  15. assert!(insert_operation.can_compose(&update_operation))
  16. }
  17. #[test]
  18. fn operation_insert_compose_attribute_update_test() {
  19. let insert_operation = NodeOperation::Insert {
  20. path: 0.into(),
  21. nodes: vec![],
  22. };
  23. let update_operation = NodeOperation::Update {
  24. path: 0.into(),
  25. changeset: Changeset::Attributes {
  26. new: Default::default(),
  27. old: Default::default(),
  28. },
  29. };
  30. assert!(!insert_operation.can_compose(&update_operation))
  31. }
  32. #[test]
  33. fn operation_insert_compose_update_with_diff_path_test() {
  34. let insert_operation = NodeOperation::Insert {
  35. path: 0.into(),
  36. nodes: vec![],
  37. };
  38. let update_operation = NodeOperation::Update {
  39. path: 1.into(),
  40. changeset: Changeset::Attributes {
  41. new: Default::default(),
  42. old: Default::default(),
  43. },
  44. };
  45. assert!(!insert_operation.can_compose(&update_operation))
  46. }
  47. #[test]
  48. fn operation_insert_compose_insert_operation_test() {
  49. let insert_operation = NodeOperation::Insert {
  50. path: 0.into(),
  51. nodes: vec![],
  52. };
  53. assert!(!insert_operation.can_compose(&NodeOperation::Insert {
  54. path: 0.into(),
  55. nodes: vec![],
  56. }),)
  57. }
  58. #[test]
  59. fn operation_update_compose_insert_operation_test() {
  60. let update_operation = NodeOperation::Update {
  61. path: 0.into(),
  62. changeset: Changeset::Attributes {
  63. new: Default::default(),
  64. old: Default::default(),
  65. },
  66. };
  67. assert!(!update_operation.can_compose(&NodeOperation::Insert {
  68. path: 0.into(),
  69. nodes: vec![],
  70. }))
  71. }
  72. #[test]
  73. fn operation_update_compose_update_test() {
  74. let update_operation_1 = NodeOperation::Update {
  75. path: 0.into(),
  76. changeset: Changeset::Attributes {
  77. new: Default::default(),
  78. old: Default::default(),
  79. },
  80. };
  81. let update_operation_2 = NodeOperation::Update {
  82. path: 0.into(),
  83. changeset: Changeset::Attributes {
  84. new: Default::default(),
  85. old: Default::default(),
  86. },
  87. };
  88. assert!(update_operation_1.can_compose(&update_operation_2));
  89. }
  90. #[test]
  91. fn operation_update_compose_update_with_diff_path_test() {
  92. let update_operation_1 = NodeOperation::Update {
  93. path: 0.into(),
  94. changeset: Changeset::Attributes {
  95. new: Default::default(),
  96. old: Default::default(),
  97. },
  98. };
  99. let update_operation_2 = NodeOperation::Update {
  100. path: 1.into(),
  101. changeset: Changeset::Attributes {
  102. new: Default::default(),
  103. old: Default::default(),
  104. },
  105. };
  106. assert!(!update_operation_1.can_compose(&update_operation_2));
  107. }
  108. #[test]
  109. fn operation_insert_compose_insert_test() {
  110. let insert_operation_1 = NodeOperation::Insert {
  111. path: 0.into(),
  112. nodes: vec![],
  113. };
  114. let insert_operation_2 = NodeOperation::Insert {
  115. path: 0.into(),
  116. nodes: vec![],
  117. };
  118. assert!(!insert_operation_1.can_compose(&insert_operation_2));
  119. }