123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- use crate::document::edit_script::{EditorScript::*, *};
- use flowy_collaboration::entities::revision::RevisionState;
- use lib_ot::core::{count_utf16_code_units, Interval};
- #[tokio::test]
- async fn document_sync_current_rev_id_check() {
- let scripts = vec![
- InsertText("1", 0),
- AssertCurrentRevId(1),
- InsertText("2", 1),
- AssertCurrentRevId(2),
- InsertText("3", 2),
- AssertCurrentRevId(3),
- AssertNextRevId(None),
- AssertJson(r#"[{"insert":"123\n"}]"#),
- ];
- EditorTest::new().await.run_scripts(scripts).await;
- }
- #[tokio::test]
- async fn document_sync_state_check() {
- let scripts = vec![
- InsertText("1", 0),
- InsertText("2", 1),
- InsertText("3", 2),
- AssertRevisionState(1, RevisionState::Ack),
- AssertRevisionState(2, RevisionState::Ack),
- AssertRevisionState(3, RevisionState::Ack),
- AssertJson(r#"[{"insert":"123\n"}]"#),
- ];
- EditorTest::new().await.run_scripts(scripts).await;
- }
- #[tokio::test]
- async fn document_sync_insert_test() {
- let scripts = vec![
- InsertText("1", 0),
- InsertText("2", 1),
- InsertText("3", 2),
- AssertJson(r#"[{"insert":"123\n"}]"#),
- AssertNextRevId(None),
- ];
- EditorTest::new().await.run_scripts(scripts).await;
- }
- #[tokio::test]
- async fn document_sync_insert_in_chinese() {
- let s = "好".to_owned();
- let offset = count_utf16_code_units(&s);
- let scripts = vec![
- InsertText("你", 0),
- InsertText("好", offset),
- AssertJson(r#"[{"insert":"你好\n"}]"#),
- ];
- EditorTest::new().await.run_scripts(scripts).await;
- }
- #[tokio::test]
- async fn document_sync_insert_with_emoji() {
- let s = "😁".to_owned();
- let offset = count_utf16_code_units(&s);
- let scripts = vec![
- InsertText("😁", 0),
- InsertText("☺️", offset),
- AssertJson(r#"[{"insert":"😁☺️\n"}]"#),
- ];
- EditorTest::new().await.run_scripts(scripts).await;
- }
- #[tokio::test]
- async fn document_sync_delete_in_english() {
- let scripts = vec![
- InsertText("1", 0),
- InsertText("2", 1),
- InsertText("3", 2),
- Delete(Interval::new(0, 2)),
- AssertJson(r#"[{"insert":"3\n"}]"#),
- ];
- EditorTest::new().await.run_scripts(scripts).await;
- }
- #[tokio::test]
- async fn document_sync_delete_in_chinese() {
- let s = "好".to_owned();
- let offset = count_utf16_code_units(&s);
- let scripts = vec![
- InsertText("你", 0),
- InsertText("好", offset),
- Delete(Interval::new(0, offset)),
- AssertJson(r#"[{"insert":"好\n"}]"#),
- ];
- EditorTest::new().await.run_scripts(scripts).await;
- }
- #[tokio::test]
- async fn document_sync_replace_test() {
- let scripts = vec![
- InsertText("1", 0),
- InsertText("2", 1),
- InsertText("3", 2),
- Replace(Interval::new(0, 3), "abc"),
- AssertJson(r#"[{"insert":"abc\n"}]"#),
- ];
- EditorTest::new().await.run_scripts(scripts).await;
- }
|