First commit

This commit is contained in:
Jamie Hardt
2020-11-20 10:55:52 -08:00
commit 86e8a26e0a
19 changed files with 1452 additions and 0 deletions

BIN
tests/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
tests/arch_pt_media.zip Normal file

Binary file not shown.

View File

@@ -0,0 +1,48 @@
#!/bin/zsh
mkdir -p media
cd media
# create a silent bext wave file with fixture metadata and a time refernce starting at
# one minute
#
# Keywords for bext metadata are here...
# https://github.com/FFmpeg/FFmpeg/blob/17a0dfebf55f67653c29a607545a799f12bc0c01/libavformat/wavenc.c#L110
#
ffmpeg -y -f lavfi -i "aevalsrc=0|0:c=stereo" -to 0.1 -ar 48000 -c:a pcm_s24le -write_bext 1 \
-metadata "description=FFMPEG-generated stereo WAV file with bext metadata" \
-metadata "originator=ffmpeg" \
-metadata "originator_reference=STEREO_WAVE_TEST" \
-metadata "time_reference=2880000" \
-metadata "origination_date=2020-11-18" \
-metadata "origination_time=12:00:00" \
-metadata "umid=0xFF00FF00FF00FF00FF00FF00FF00FF00" \
-metadata "coding_history=A:PCM,48K" ff_bwav_stereo.wav
ffmpeg -y -f lavfi -i "aevalsrc=0|0|0|0|0|0:c=5.1" -to 0.1 -ar 48000 -c:a pcm_s24le -write_bext 1 \
-metadata "description=FFMPEG-generated 5.1 WAV file with bext metadata" \
-metadata "originator=ffmpeg" \
-metadata "originator_reference=5_1_WAVE_TEST" \
-metadata "time_reference=0" \
-metadata "origination_date=2020-11-18" \
-metadata "origination_time=13:00:00" \
-metadata "umid=0xFF00FF00FF00FF00FF00FF00FF00FF01" \
-metadata "coding_history=A:PCM,48K" ff_bwav_51.wav
ffmpeg -y -f lavfi -i "aevalsrc=0" -to 1 -ar 44100 ff_silence.wav
ffmpeg -y -f lavfi -i "aevalsrc=0" -to 1 -ar 44100 -fflags bitexact ff_minimal.wav
# ffmpeg -y -f lavfi -i "aevalsrc=0|0|0|0|0|0:c=5.1" -to 0:45:00 -ar 96000 -c:a pcm_s24le -rf64 1 \
# -write_bext 1 \
# -metadata "description=rf64 test file" ff_longfile.wav
ffmpeg -y -f lavfi -i "anoisesrc=r=48000:a=0.5:c=pink:s=41879" -to 0.1 -ar 48000 -c:a pcm_f32le \
-write_bext 1 \
-metadata "description=float test file" ff_float.wav
touch error.wav
unzip ../arch_pt_media.zip
unzip ../arch_audacity_media.zip
rm -rf __MACOSX

77
tests/integration_test.rs Normal file
View File

@@ -0,0 +1,77 @@
extern crate wavfile;
use wavfile::WaveReader;
use wavfile::Error;
#[test]
fn test_open() {
let path = "tests/media/ff_silence.wav";
match WaveReader::open(path) {
Ok(_) => {
()
},
Err(x) => {
assert!(false, "Opened error.wav with unexpected error {:?}", x)
}
}
}
#[test]
fn test_format_silence() -> Result<(),Error> {
let path = "tests/media/ff_silence.wav";
let mut w = WaveReader::open(path)?;
let format = w.format()?;
assert_eq!(format.sample_rate, 44100);
assert_eq!(format.channel_count, 1);
assert_eq!(format.tag, 1);
Ok( () )
}
#[test]
fn test_format_error() {
let path = "tests/media/error.wav";
if let Ok(_) = WaveReader::open(path) {
assert!(false);
} else {
assert!(true);
}
}
#[test]
fn test_frame_count() -> Result<(),Error> {
let path = "tests/media/ff_silence.wav";
let mut w = WaveReader::open(path)?;
let l = w.frame_length()?;
assert_eq!(l, 44100);
Ok( () )
}
#[test]
fn test_minimal_wave() {
let path = "tests/media/ff_silence.wav";
let mut w = WaveReader::open(path).expect("Failure opening file");
if let Err(Error::NotMinimalWaveFile) = w.validate_minimal() {
assert!(true);
} else {
assert!(false);
}
let min_path = "tests/media/ff_minimal.wav";
let mut w = WaveReader::open(min_path).expect("Failure opening file");
if let Err(Error::NotMinimalWaveFile) = w.validate_minimal() {
assert!(false);
} else {
assert!(true);
}
}