mod data;
use libmpegts::{
psi::*,
slicer::TsSlicer,
};
#[test]
fn test_parse_nit() {
let mut psi = Psi::default();
TsSlicer::new().slice(data::NIT_DVBS).for_each(|p| {
psi.assemble(&p);
});
let nit = NitSectionRef::try_from(&psi).expect("Valid NIT section");
assert_eq!(nit.table_id(), 0x40);
assert_eq!(nit.version(), 11);
assert_eq!(nit.network_id(), 85);
assert!(nit.network_descriptors().is_none());
const NIT_DATA: &[(u16, u16, usize)] = &[
(8400, 318, 2),
(12600, 318, 1),
(700, 318, 1),
(8900, 318, 1),
(9400, 318, 1),
(15600, 318, 1),
];
for (i, transport_stream) in nit.transport_streams().enumerate() {
let transport_stream = transport_stream.expect("Valid NIT transport stream");
let expected = NIT_DATA.get(i).expect("Expected NIT transport stream");
assert_eq!(transport_stream.transport_stream_id(), expected.0);
assert_eq!(transport_stream.original_network_id(), expected.1);
let descriptors = transport_stream
.transport_stream_descriptors()
.expect("Service descriptors")
.into_iter()
.filter_map(Result::ok)
.count();
assert_eq!(descriptors, expected.2);
}
}