csdif-core 0.1.3

Core library for modeling, validating, and transforming CSDIF data
Documentation
// SPDX-License-Identifier: MIT

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(), // onbekende sensor_id
    };

    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"
    );
}