#![allow(dead_code, unused_imports)]
pub(crate) mod covariance_block;
pub(crate) mod epoch;
pub(crate) mod header;
pub(crate) use crate::astro::xml::{escape, escape_opt, first_illegal_xml_1_0_char};
pub(crate) use crate::format::kvn::{tokenize, FieldMap};
pub(crate) use covariance_block::{read_covariance6, write_covariance6, COVARIANCE6_KEYS};
pub(crate) use epoch::NdmEpoch;
pub(crate) use header::NdmHeader;
#[cfg(test)]
mod tests {
use super::*;
use crate::astro::covariance::Covariance6;
use crate::validate::CivilSecondPolicy;
#[test]
fn root_reexports_header_epoch_covariance_and_text_helpers() {
let header = NdmHeader::read(
&FieldMap::parse("CCSDS_OMM_VERS = 2.0\nORIGINATOR = SIDEREON\n"),
"CCSDS_OMM_VERS",
);
assert_eq!(header.vers, "2.0");
assert_eq!(header.originator.as_deref(), Some("SIDEREON"));
let epoch =
NdmEpoch::parse("2026-06-17T04:32:52.099296Z", CivilSecondPolicy::UtcLike).unwrap();
assert_eq!(epoch.to_iso8601(), "2026-06-17T04:32:52.099296");
let covariance = Covariance6::from_diagonal([1.0, 2.0, 3.0, 4.0, 5.0, 6.0]).unwrap();
let lines = write_covariance6(&covariance);
let recovered = read_covariance6(&FieldMap::from_pairs(tokenize(&lines.join("\n"))))
.expect("covariance round-trip");
assert_eq!(recovered.as_matrix(), covariance.as_matrix());
assert_eq!(escape("<&>"), "<&>");
assert_eq!(escape_opt(&None), "");
assert_eq!(first_illegal_xml_1_0_char("\u{0}"), Some('\u{0}'));
}
}