From 20ecbb5b8e2a64d57288c043a524cb0b474fd429 Mon Sep 17 00:00:00 2001 From: Spencer Russell Date: Mon, 11 Aug 2014 18:25:12 -0400 Subject: [PATCH] adds a failing test for file playback --- test/test_sndfile.jl | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 test/test_sndfile.jl diff --git a/test/test_sndfile.jl b/test/test_sndfile.jl new file mode 100644 index 0000000..9bc884f --- /dev/null +++ b/test/test_sndfile.jl @@ -0,0 +1,43 @@ +module TestSndfile + +include("testhelpers.jl") + +using AudioIO +using FactCheck +import AudioIO: DeviceInfo, render, AudioSample + +facts("WAV file write/read") do + fname = Pkg.dir("AudioIO", "test", "sinwave.wav") + + samplerate = 44100 + freq = 440 + t = [0 : 2 * samplerate - 1] / samplerate + phase = 2 * pi * freq * t + reference = int16((2 ^ 15 - 1) * sin(phase)) + + AudioIO.open(fname, "w") do f + write(f, reference) + end + + # test basic reading + AudioIO.open(fname) do f + @fact f.sfinfo.channels => 1 + @fact f.sfinfo.frames => 2 * samplerate + actual = read(f, 2 * samplerate) + @fact reference => mse(actual) + end + + # test rendering as an AudioNode + AudioIO.open(fname) do f + # pretend we have a stream at the same rate as the file + bufsize = 512 + input = zeros(AudioSample, bufsize) + test_info = DeviceInfo(samplerate, bufsize) + node = FilePlayer(f) + buf = render(node, input, test_info) + @fact buf => mse(actual[1:bufsize]) + end + +end + +end # module TestSndfile