serde_test.rs 2.8 KB

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