-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserde.rs
30 lines (26 loc) · 1.01 KB
/
serde.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#[cfg(feature = "serde")]
mod ser_de {
use factrs::{
containers::Values, residuals::PriorResidual, symbols::X, traits::Residual,
variables::VectorVar1,
};
#[test]
fn test_vector_serialize() {
let trait_object = &PriorResidual::new(VectorVar1::new(2.3)) as &dyn Residual;
let json = serde_json::to_string(trait_object).unwrap();
let expected = r#"{"tag":"PriorResidual<VectorVar<1>>","prior":[2.3]}"#;
println!("json: {}", json);
assert_eq!(json, expected);
}
#[test]
fn test_vector() {
let json = r#"{"tag":"PriorResidual<VectorVar<1>>","prior":[1.2]}"#;
let trait_object: Box<dyn Residual> = serde_json::from_str(json).unwrap();
let mut values = Values::new();
values.insert_unchecked(X(0), VectorVar1::new(1.2));
let error = trait_object.residual(&values, &[X(0).into()])[0];
assert_eq!(trait_object.dim_in(), 1);
assert_eq!(trait_object.dim_out(), 1);
assert_eq!(error, 0.0);
}
}