Skip to main content

runmat_package/source/
acquisition.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
4#[serde(rename_all = "kebab-case")]
5pub enum SourceAcquisitionIntent {
6    Execute,
7    Fetch,
8    Update,
9}
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
12#[serde(default, deny_unknown_fields)]
13pub struct SourceAcquisitionPolicy {
14    pub locked: bool,
15    pub frozen: bool,
16    pub offline: bool,
17}
18
19#[cfg(test)]
20mod tests {
21    use super::SourceAcquisitionPolicy;
22
23    #[test]
24    fn omitted_wire_policy_fields_use_the_portable_defaults() {
25        let policy: SourceAcquisitionPolicy = serde_json::from_str("{}").unwrap();
26        assert_eq!(policy, SourceAcquisitionPolicy::default());
27        assert!(serde_json::from_str::<SourceAcquisitionPolicy>(
28            r#"{"locked":false,"unexpected":true}"#
29        )
30        .is_err());
31    }
32}
33
34#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
35#[serde(rename_all = "kebab-case")]
36pub enum SourceLockAction {
37    Preserve,
38    Write,
39    Replace,
40}