revision_test.rs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. use flowy_test::editor::{EditorScript::*, *};
  2. use lib_ot::{core::DeltaBuilder, revision::RevState, rich_text::RichTextDeltaBuilder};
  3. #[tokio::test]
  4. async fn doc_rev_state_test1() {
  5. let scripts = vec![
  6. InsertText("123", 0),
  7. AssertCurrentRevId(1),
  8. AssertRevisionState(1, RevState::Local),
  9. SimulateAckedMessage(1),
  10. AssertRevisionState(1, RevState::Acked),
  11. AssertNextSendingRevision(None),
  12. AssertJson(r#"[{"insert":"123\n"}]"#),
  13. ];
  14. EditorTest::new().await.run_scripts(scripts).await;
  15. }
  16. #[tokio::test]
  17. async fn doc_rev_state_test2() {
  18. let scripts = vec![
  19. InsertText("1", 0),
  20. InsertText("2", 1),
  21. InsertText("3", 2),
  22. AssertCurrentRevId(3),
  23. AssertRevisionState(1, RevState::Local),
  24. AssertRevisionState(2, RevState::Local),
  25. AssertRevisionState(3, RevState::Local),
  26. SimulateAckedMessage(1),
  27. AssertRevisionState(1, RevState::Acked),
  28. AssertNextSendingRevision(Some(2)),
  29. SimulateAckedMessage(2),
  30. AssertRevisionState(2, RevState::Acked),
  31. //
  32. AssertNextSendingRevision(Some(3)),
  33. AssertRevisionState(3, RevState::Local),
  34. AssertJson(r#"[{"insert":"123\n"}]"#),
  35. ];
  36. EditorTest::new().await.run_scripts(scripts).await;
  37. }
  38. #[tokio::test]
  39. async fn doc_push_test() {
  40. let delta = RichTextDeltaBuilder::new().insert("abc\n").build();
  41. let scripts = vec![
  42. InsertText("1", 0),
  43. InsertText("2", 1),
  44. InsertText("3", 2),
  45. SimulatePushRevisionMessageWithDelta(delta),
  46. AssertJson(r#"[{"insert":"123\nabc\n"}]"#),
  47. ];
  48. EditorTest::new().await.run_scripts(scripts).await;
  49. }