fmi_schema/fmi3/
variable_dependency.rs1use 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}