serde_test.rs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. use flowy_document_infra::core::{Document, PlainDoc};
  2. use lib_ot::core::*;
  3. #[test]
  4. fn operation_insert_serialize_test() {
  5. let attributes = AttributeBuilder::new()
  6. .add_attr(Attribute::Bold(true))
  7. .add_attr(Attribute::Italic(true))
  8. .build();
  9. let operation = OpBuilder::insert("123").attributes(attributes).build();
  10. let json = serde_json::to_string(&operation).unwrap();
  11. eprintln!("{}", json);
  12. let insert_op: Operation = serde_json::from_str(&json).unwrap();
  13. assert_eq!(insert_op, operation);
  14. }
  15. #[test]
  16. fn operation_retain_serialize_test() {
  17. let operation = Operation::Retain(12.into());
  18. let json = serde_json::to_string(&operation).unwrap();
  19. eprintln!("{}", json);
  20. let insert_op: Operation = serde_json::from_str(&json).unwrap();
  21. assert_eq!(insert_op, operation);
  22. }
  23. #[test]
  24. fn operation_delete_serialize_test() {
  25. let operation = Operation::Delete(2);
  26. let json = serde_json::to_string(&operation).unwrap();
  27. let insert_op: Operation = serde_json::from_str(&json).unwrap();
  28. assert_eq!(insert_op, operation);
  29. }
  30. #[test]
  31. fn attributes_serialize_test() {
  32. let attributes = AttributeBuilder::new()
  33. .add_attr(Attribute::Bold(true))
  34. .add_attr(Attribute::Italic(true))
  35. .build();
  36. let retain = OpBuilder::insert("123").attributes(attributes).build();
  37. let json = serde_json::to_string(&retain).unwrap();
  38. eprintln!("{}", json);
  39. }
  40. #[test]
  41. fn delta_serialize_multi_attribute_test() {
  42. let mut delta = Delta::default();
  43. let attributes = AttributeBuilder::new()
  44. .add_attr(Attribute::Bold(true))
  45. .add_attr(Attribute::Italic(true))
  46. .build();
  47. let retain = OpBuilder::insert("123").attributes(attributes).build();
  48. delta.add(retain);
  49. delta.add(Operation::Retain(5.into()));
  50. delta.add(Operation::Delete(3));
  51. let json = serde_json::to_string(&delta).unwrap();
  52. eprintln!("{}", json);
  53. let delta_from_json = Delta::from_json(&json).unwrap();
  54. assert_eq!(delta_from_json, delta);
  55. }
  56. #[test]
  57. fn delta_deserialize_test() {
  58. let json = r#"[
  59. {"retain":2,"attributes":{"italic":true}},
  60. {"retain":2,"attributes":{"italic":123}},
  61. {"retain":2,"attributes":{"italic":"true","bold":"true"}},
  62. {"retain":2,"attributes":{"italic":true,"bold":true}}
  63. ]"#;
  64. let delta = Delta::from_json(json).unwrap();
  65. eprintln!("{}", delta);
  66. }
  67. #[test]
  68. fn delta_deserialize_null_test() {
  69. let json = r#"[
  70. {"retain":7,"attributes":{"bold":null}}
  71. ]"#;
  72. let delta1 = Delta::from_json(json).unwrap();
  73. let mut attribute = Attribute::Bold(true);
  74. attribute.value = AttributeValue(None);
  75. let delta2 = DeltaBuilder::new().retain_with_attributes(7, attribute.into()).build();
  76. assert_eq!(delta2.to_json(), r#"[{"retain":7,"attributes":{"bold":""}}]"#);
  77. assert_eq!(delta1, delta2);
  78. }
  79. #[test]
  80. fn delta_serde_null_test() {
  81. let mut attribute = Attribute::Bold(true);
  82. attribute.value = AttributeValue(None);
  83. assert_eq!(attribute.to_json(), r#"{"bold":""}"#);
  84. }
  85. #[test]
  86. fn document_insert_serde_test() {
  87. let mut document = Document::new::<PlainDoc>();
  88. document.insert(0, "\n").unwrap();
  89. document.insert(0, "123").unwrap();
  90. let json = document.to_json();
  91. assert_eq!(r#"[{"insert":"123\n"}]"#, json);
  92. assert_eq!(r#"[{"insert":"123\n"}]"#, Document::from_json(&json).unwrap().to_json());
  93. }