1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
use super::view::ViewId; #[derive(Debug, Serialize, Deserialize, PartialEq)] pub struct Query { pub id: u64, pub chars: Option<String>, pub case_sensitive: Option<bool>, pub is_regex: Option<bool>, pub whole_words: Option<bool>, pub matches: u64, pub lines: Vec<u64>, } #[derive(Debug, Serialize, Deserialize, PartialEq)] pub struct FindStatus { pub view_id: ViewId, pub queries: Vec<Query>, } #[derive(Debug, Serialize, Deserialize, PartialEq)] pub struct Status { pub chars: String, pub preserve_case: Option<bool>, } #[derive(Debug, Serialize, Deserialize, PartialEq)] pub struct ReplaceStatus { pub view_id: ViewId, pub status: Status, } #[cfg(test)] mod test { #[test] fn test_findstatus() { use crate::structs::findreplace::{FindStatus, Query}; use serde_json; use std::str::FromStr; let s = r#"{"view_id": "view-id-1", "queries": [{"id": 1, "chars": "a", "case_sensitive": false, "is_regex": false, "whole_words": true, "matches": 6, "lines": [1, 3, 3, 6]}]}"#; let deserialized: Result<FindStatus, _> = serde_json::from_str(s); let find_status = FindStatus { view_id: FromStr::from_str("view-id-1").unwrap(), queries: vec![Query { id: 1, chars: Some("a".to_string()), case_sensitive: Some(false), is_regex: Some(false), whole_words: Some(true), matches: 6, lines: vec![1, 3, 3, 6], }], }; assert_eq!(deserialized.unwrap(), find_status); } #[test] fn test_replacestatus() { use crate::structs::findreplace::{ReplaceStatus, Status}; use serde_json; use std::str::FromStr; let s = r#"{"view_id": "view-id-1", "status": {"chars": "abc", "preserve_case": false}}"#; let deserialized: Result<ReplaceStatus, _> = serde_json::from_str(s); let replace_status = ReplaceStatus { view_id: FromStr::from_str("view-id-1").unwrap(), status: Status { chars: "abc".to_string(), preserve_case: Some(false), }, }; assert_eq!(deserialized.unwrap(), replace_status); } }