use std::path::Path;
use unbundle::MediaFile;
fn sample_video_path() -> &'static str {
"tests/fixtures/sample_video.mp4"
}
#[test]
fn container_tags_present() {
let path = sample_video_path();
if !Path::new(path).exists() {
return;
}
let unbundler = MediaFile::open(path).expect("open");
let meta = unbundler.metadata();
if let Some(tags) = &meta.tags {
assert!(
!tags.is_empty() || tags.is_empty(),
"tags field should be accessible"
);
}
}
#[test]
fn video_colorspace_fields() {
let path = sample_video_path();
if !Path::new(path).exists() {
return;
}
let unbundler = MediaFile::open(path).expect("open");
let meta = unbundler.metadata();
let video = meta.video.as_ref().expect("video metadata");
let _ = &video.color_space;
let _ = &video.color_range;
let _ = &video.color_primaries;
let _ = &video.color_transfer;
let _ = &video.bits_per_raw_sample;
let _ = &video.pixel_format_name;
}
#[test]
fn video_tracks_populated() {
let path = sample_video_path();
if !Path::new(path).exists() {
return;
}
let unbundler = MediaFile::open(path).expect("open");
let meta = unbundler.metadata();
if let Some(tracks) = &meta.video_tracks {
assert!(!tracks.is_empty(), "expected at least one video track");
for track in tracks {
assert!(track.width > 0);
assert!(track.height > 0);
}
}
}
#[test]
fn video_track_selection() {
let path = sample_video_path();
if !Path::new(path).exists() {
return;
}
let mut unbundler = MediaFile::open(path).expect("open");
let extractor = unbundler.video_track(0);
assert!(extractor.is_ok(), "track 0 should be valid");
let err = unbundler.video_track(99);
assert!(err.is_err(), "track 99 should be out of range");
}