use csdif_core::model::{CsdifDocument, Sensor, Observation, Location};
use csdif_core::validate::validate_document;
#[test]
fn test_valid_document() {
let sensor = Sensor {
id: "s1".to_string(),
sensor_type: "temperature".to_string(),
unit: "C".to_string(),
location: Location {
latitude: 52.0,
longitude: 4.0,
elevation: Some(1.0),
},
};
let obs = Observation {
timestamp: "2025-10-08T08:00:00Z".to_string(),
value: 21.5,
sensor_id: "s1".to_string(),
};
let doc = CsdifDocument {
sensors: vec![sensor],
observations: vec![obs],
};
assert!(validate_document(&doc).is_ok());
}
#[test]
fn test_observation_with_unknown_sensor_id() {
let sensor = Sensor {
id: "s1".to_string(),
sensor_type: "temperature".to_string(),
unit: "C".to_string(),
location: Location {
latitude: 52.0,
longitude: 4.0,
elevation: Some(1.0),
},
};
let obs = Observation {
timestamp: "2025-10-08T08:00:00Z".to_string(),
value: 21.5,
sensor_id: "s2".to_string(), };
let doc = CsdifDocument {
sensors: vec![sensor],
observations: vec![obs],
};
let result = validate_document(&doc);
assert!(result.is_err());
assert_eq!(
result.unwrap_err(),
"Observation refers to unknown sensor ID: s2"
);
}