use libfatigue::config::types::{FatigueTesterConfig, RunDuration}; #[derive(serde::Deserialize)] struct Test1Properties { some: String, value: i32, } #[test] pub fn test_config_deserialization() { let cfg = r#" run: base_url: http://google.com duration: iteration: iterations: 5000 actions: - type: test1 properties: some: a value: 1 - type: test2 properties: other: properties are: here is: true "#; let result: FatigueTesterConfig = serde_yaml::from_str(cfg).unwrap(); assert_eq!(2, result.actions.len()); assert_eq!("test1", result.actions[0].action_type); let test1: Test1Properties = serde_yaml::from_value(result.actions[0].action_properties.clone()).unwrap(); assert_eq!("a", test1.some); assert_eq!(1, test1.value); #[allow(unreachable_patterns)] match result.run_info.duration { RunDuration::Iteration { warm_up, iterations, } => { assert_eq!(None, warm_up); assert_eq!(5000, iterations) } _ => { assert!(false, "wrong variant") } } }