fmi_schema/fmi3/
variable_dependency.rs

1use yaserde_derive::{YaDeserialize, YaSerialize};
2
3use super::Annotations;
4
5#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
6pub enum DependenciesKind {
7    #[yaserde(rename = "dependent")]
8    #[default]
9    Dependent,
10    #[yaserde(rename = "constant")]
11    Constant,
12    #[yaserde(rename = "fixed")]
13    Fixed,
14    #[yaserde(rename = "tunable")]
15    Tunable,
16    #[yaserde(rename = "discrete")]
17    Discrete,
18}
19
20#[derive(Default, PartialEq, Debug, YaSerialize, YaDeserialize)]
21#[yaserde(tag = "Fmi3Unknown")]
22pub struct Fmi3Unknown {
23    #[yaserde(rename = "Annotations")]
24    pub annotations: Option<Annotations>,
25    #[yaserde(attribute = true, rename = "valueReference")]
26    pub value_reference: u32,
27    #[yaserde(attribute = true, rename = "dependencies")]
28    pub dependencies: Vec<u32>,
29    #[yaserde(attribute = true, rename = "dependenciesKind")]
30    pub dependencies_kind: Vec<DependenciesKind>,
31}
32
33#[test]
34fn test_dependencies_kind() {
35    let xml = r#"
36    <Fmi3Unknown valueReference="1" dependencies="0 1 2" dependenciesKind="dependent constant fixed" />
37    "#;
38
39    let x: Fmi3Unknown = yaserde::de::from_str(xml).unwrap();
40    assert_eq!(x.value_reference, 1);
41    assert_eq!(x.dependencies, vec![0, 1, 2]);
42    assert_eq!(
43        x.dependencies_kind,
44        vec![
45            DependenciesKind::Dependent,
46            DependenciesKind::Constant,
47            DependenciesKind::Fixed
48        ]
49    );
50}