1use std::sync::Arc;
7
8#[derive(Debug, Clone, PartialEq, Eq)]
10pub enum PanelUpdate {
11 File { path: String, text: String },
13 Diff { path: String, unified: String },
15 Mermaid { source: String },
17 Clear,
19}
20
21pub type PanelSink = Arc<dyn Fn(PanelUpdate) + Send + Sync>;
23
24#[cfg(test)]
25mod tests {
26 use super::*;
27
28 #[test]
29 fn panel_update_file_and_diff_variants() {
30 let file = PanelUpdate::File {
31 path: "a.rs".into(),
32 text: "fn main() {}".into(),
33 };
34 let diff = PanelUpdate::Diff {
35 path: "a.rs".into(),
36 unified: "--- a\n+++ b".into(),
37 };
38 assert_ne!(file, diff);
39 assert_eq!(PanelUpdate::Clear, PanelUpdate::Clear);
40 let mermaid = PanelUpdate::Mermaid {
41 source: "graph TD; A-->B".into(),
42 };
43 assert_ne!(file, mermaid);
44 }
45}