1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, Eq, PartialEq, Serialize, Deserialize)]
7pub enum VmStateChange {
8 Paused,
10 Resumed,
12}
13
14#[derive(Debug, Clone, Deserialize)]
16#[serde(deny_unknown_fields)]
17pub struct RawVmPatch {
18 pub state: VmStateChange,
20}
21
22#[cfg(test)]
23mod tests {
24 use super::*;
25
26 #[test]
27 fn test_should_deserialize_paused() {
28 let raw: RawVmPatch = serde_json::from_str(r#"{"state":"Paused"}"#).unwrap();
29 assert_eq!(raw.state, VmStateChange::Paused);
30 }
31
32 #[test]
33 fn test_should_deserialize_resumed() {
34 let raw: RawVmPatch = serde_json::from_str(r#"{"state":"Resumed"}"#).unwrap();
35 assert_eq!(raw.state, VmStateChange::Resumed);
36 }
37
38 #[test]
39 fn test_should_reject_unknown_state() {
40 assert!(serde_json::from_str::<RawVmPatch>(r#"{"state":"Halted"}"#).is_err());
41 }
42}