osm-io 0.3.0

Read and write OSM data
Documentation
use anyhow::{anyhow, Error};
use chrono::{DateTime, SecondsFormat};

pub fn timestamp_to_iso8601_seconds(usec: i64) -> Result<String, Error> {
    let datetime = DateTime::from_timestamp_micros(usec)
        .ok_or(anyhow!("Invalid timestamp {}", usec))?;
    Ok(datetime.to_rfc3339_opts(SecondsFormat::Secs, true))
}

#[cfg(test)]
mod tests {
    use crate::osm::converters::timestamp_to_iso8601_seconds;

    #[test]
    fn test_timestamp_to_iso8601_seconds() {
        let result = timestamp_to_iso8601_seconds(0).unwrap();
        assert_eq!(result, "1970-01-01T00:00:00Z");
    }

    #[test]
    #[should_panic]
    fn test_timestamp_to_iso8601_seconds_failure() {
        timestamp_to_iso8601_seconds(i64::MAX).expect("Invalid input");
    }
}