mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
113 lines
3.4 KiB
Rust
113 lines
3.4 KiB
Rust
pub mod helper;
|
|
|
|
use crate::{
|
|
helper::{MergeTestOp::*, *},
|
|
MergeTestOp::*,
|
|
};
|
|
use flowy_ot::{
|
|
attributes::{Attributes, AttrsBuilder},
|
|
delta::Delta,
|
|
interval::Interval,
|
|
operation::{OpBuilder, Operation, Retain},
|
|
};
|
|
|
|
#[test]
|
|
fn delta_add_bold_attr1() {
|
|
let ops = vec![
|
|
Insert(0, "123"),
|
|
Bold(0, Interval::new(0, 3), true),
|
|
AssertOpsJson(0, r#"[{"insert":"123","attributes":{"bold":"true"}}]"#),
|
|
Bold(0, Interval::new(0, 3), false),
|
|
AssertOpsJson(0, r#"[{"insert":"123"}]"#),
|
|
];
|
|
MergeTest::new().run_script(ops);
|
|
}
|
|
|
|
#[test]
|
|
fn delta_add_bold_attr2() {
|
|
let ops = vec![
|
|
Insert(0, "1234"),
|
|
Bold(0, Interval::new(0, 4), true),
|
|
AssertOpsJson(0, r#"[{"insert":"1234","attributes":{"bold":"true"}}]"#),
|
|
Bold(0, Interval::new(2, 4), false),
|
|
AssertOpsJson(
|
|
0,
|
|
r#"[{"insert":"12","attributes":{"bold":"true"}},{"insert":"34"}]"#,
|
|
),
|
|
];
|
|
MergeTest::new().run_script(ops);
|
|
}
|
|
|
|
#[test]
|
|
fn delta_add_bold_attr3() {
|
|
let ops = vec![
|
|
Insert(0, "1234"),
|
|
Bold(0, Interval::new(0, 4), true),
|
|
AssertOpsJson(0, r#"[{"insert":"1234","attributes":{"bold":"true"}}]"#),
|
|
Bold(0, Interval::new(0, 2), false),
|
|
AssertOpsJson(
|
|
0,
|
|
r#"[{"insert":"12"},{"insert":"34","attributes":{"bold":"true"}}]"#,
|
|
),
|
|
];
|
|
MergeTest::new().run_script(ops);
|
|
}
|
|
|
|
#[test]
|
|
fn delta_add_bold_attr_and_invert() {
|
|
let ops = vec![
|
|
Insert(0, "1234"),
|
|
Bold(0, Interval::new(0, 4), true),
|
|
AssertOpsJson(0, r#"[{"insert":"1234","attributes":{"bold":"true"}}]"#),
|
|
Bold(0, Interval::new(2, 4), false),
|
|
AssertOpsJson(
|
|
0,
|
|
r#"[{"insert":"12","attributes":{"bold":"true"}},{"insert":"34"}]"#,
|
|
),
|
|
Bold(0, Interval::new(2, 4), true),
|
|
AssertOpsJson(0, r#"[{"insert":"1234","attributes":{"bold":"true"}}]"#),
|
|
];
|
|
MergeTest::new().run_script(ops);
|
|
}
|
|
|
|
#[test]
|
|
fn delta_merge_inserted_text_with_same_attribute() {
|
|
let ops = vec![
|
|
InsertBold(0, "123", Interval::new(0, 3)),
|
|
AssertOpsJson(0, r#"[{"insert":"123","attributes":{"bold":"true"}}]"#),
|
|
InsertBold(0, "456", Interval::new(3, 6)),
|
|
AssertOpsJson(0, r#"[{"insert":"123456","attributes":{"bold":"true"}}]"#),
|
|
];
|
|
MergeTest::new().run_script(ops);
|
|
}
|
|
|
|
#[test]
|
|
fn delta_compose_attr_delta_with_no_attr_delta_test() {
|
|
let expected = r#"[{"insert":"123456","attributes":{"bold":"true"}},{"insert":"7"}]"#;
|
|
let ops = vec![
|
|
InsertBold(0, "123456", Interval::new(0, 6)),
|
|
AssertOpsJson(0, r#"[{"insert":"123456","attributes":{"bold":"true"}}]"#),
|
|
Insert(1, "7"),
|
|
AssertOpsJson(1, r#"[{"insert":"7"}]"#),
|
|
Transform(0, 1),
|
|
AssertOpsJson(0, expected),
|
|
AssertOpsJson(1, expected),
|
|
];
|
|
MergeTest::new().run_script(ops);
|
|
}
|
|
|
|
#[test]
|
|
fn delta_compose_attr_delta_with_attr_delta_test() {
|
|
let ops = vec![
|
|
InsertBold(0, "123456", Interval::new(0, 6)),
|
|
AssertOpsJson(0, r#"[{"insert":"123456","attributes":{"bold":"true"}}]"#),
|
|
InsertBold(1, "7", Interval::new(0, 1)),
|
|
AssertOpsJson(1, r#"[{"insert":"7","attributes":{"bold":"true"}}]"#),
|
|
Transform(0, 1),
|
|
AssertOpsJson(0, r#"[{"insert":"1234567","attributes":{"bold":"true"}}]"#),
|
|
AssertOpsJson(1, r#"[{"insert":"1234567","attributes":{"bold":"true"}}]"#),
|
|
];
|
|
|
|
MergeTest::new().run_script(ops);
|
|
}
|