Removes crufty files and outdated tests
This commit is contained in:
parent
b18b9bdcae
commit
93916a630d
4 changed files with 2 additions and 482 deletions
206
Manifest.toml
206
Manifest.toml
|
@ -1,206 +0,0 @@
|
|||
# This file is machine-generated - editing it directly is not advised
|
||||
|
||||
[[AbstractFFTs]]
|
||||
deps = ["LinearAlgebra"]
|
||||
git-tree-sha1 = "051c95d6836228d120f5f4b984dd5aba1624f716"
|
||||
uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c"
|
||||
version = "0.5.0"
|
||||
|
||||
[[Base64]]
|
||||
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
|
||||
|
||||
[[BinaryProvider]]
|
||||
deps = ["Libdl", "SHA"]
|
||||
git-tree-sha1 = "5b08ed6036d9d3f0ee6369410b830f8873d4024c"
|
||||
uuid = "b99e7846-7c00-51b0-8f62-c81ae34c0232"
|
||||
version = "0.5.8"
|
||||
|
||||
[[Compat]]
|
||||
deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"]
|
||||
git-tree-sha1 = "ed2c4abadf84c53d9e58510b5fc48912c2336fbb"
|
||||
uuid = "34da2185-b29b-5c13-b0c7-acf172513d20"
|
||||
version = "2.2.0"
|
||||
|
||||
[[DSP]]
|
||||
deps = ["FFTW", "LinearAlgebra", "Polynomials", "Random", "Reexport", "SpecialFunctions", "Statistics"]
|
||||
git-tree-sha1 = "fa9564dc41fb91716c2e3353fe447f268a08f14d"
|
||||
uuid = "717857b8-e6f2-59f4-9121-6e50c889abd2"
|
||||
version = "0.6.2"
|
||||
|
||||
[[Dates]]
|
||||
deps = ["Printf"]
|
||||
uuid = "ade2ca70-3891-5945-98fb-dc099432e06a"
|
||||
|
||||
[[DelimitedFiles]]
|
||||
deps = ["Mmap"]
|
||||
uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab"
|
||||
|
||||
[[Distributed]]
|
||||
deps = ["Random", "Serialization", "Sockets"]
|
||||
uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
|
||||
|
||||
[[FFTW]]
|
||||
deps = ["AbstractFFTs", "FFTW_jll", "IntelOpenMP_jll", "Libdl", "LinearAlgebra", "MKL_jll", "Reexport"]
|
||||
git-tree-sha1 = "109d82fa4b00429f9afcce873e9f746f11f018d3"
|
||||
uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
|
||||
version = "1.2.0"
|
||||
|
||||
[[FFTW_jll]]
|
||||
deps = ["Libdl", "Pkg"]
|
||||
git-tree-sha1 = "05674f209a6e3387dd103a945b0113eeb64b1a58"
|
||||
uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a"
|
||||
version = "3.3.9+3"
|
||||
|
||||
[[FixedPointNumbers]]
|
||||
git-tree-sha1 = "d14a6fa5890ea3a7e5dcab6811114f132fec2b4b"
|
||||
uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
|
||||
version = "0.6.1"
|
||||
|
||||
[[IntelOpenMP_jll]]
|
||||
deps = ["Libdl", "Pkg"]
|
||||
git-tree-sha1 = "fb8e1c7a5594ba56f9011310790e03b5384998d6"
|
||||
uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0"
|
||||
version = "2018.0.3+0"
|
||||
|
||||
[[InteractiveUtils]]
|
||||
deps = ["Markdown"]
|
||||
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
|
||||
|
||||
[[IntervalSets]]
|
||||
deps = ["Dates", "Statistics"]
|
||||
git-tree-sha1 = "4214b48a62eb8f2c292b2ee34a508c256c0cdbc9"
|
||||
uuid = "8197267c-284f-5f27-9208-e0e47529a953"
|
||||
version = "0.3.2"
|
||||
|
||||
[[LibGit2]]
|
||||
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
|
||||
|
||||
[[Libdl]]
|
||||
uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb"
|
||||
|
||||
[[LinearAlgebra]]
|
||||
deps = ["Libdl"]
|
||||
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
|
||||
|
||||
[[Logging]]
|
||||
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
|
||||
|
||||
[[MKL_jll]]
|
||||
deps = ["Libdl", "Pkg"]
|
||||
git-tree-sha1 = "61069ae718b8ab1e325bbfb4e5268902e7ea08e3"
|
||||
uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7"
|
||||
version = "2019.0.117+0"
|
||||
|
||||
[[Markdown]]
|
||||
deps = ["Base64"]
|
||||
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
|
||||
|
||||
[[Mmap]]
|
||||
uuid = "a63ad114-7e13-5084-954f-fe012c677804"
|
||||
|
||||
[[OpenSpecFun_jll]]
|
||||
deps = ["Libdl", "Pkg"]
|
||||
git-tree-sha1 = "65f672edebf3f4e613ddf37db9dcbd7a407e5e90"
|
||||
uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e"
|
||||
version = "0.5.3+1"
|
||||
|
||||
[[Pkg]]
|
||||
deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"]
|
||||
uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
|
||||
|
||||
[[Polynomials]]
|
||||
deps = ["LinearAlgebra", "RecipesBase"]
|
||||
git-tree-sha1 = "ae71c2329790af97b7682b11241b3609e4d48626"
|
||||
uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45"
|
||||
version = "0.6.0"
|
||||
|
||||
[[Printf]]
|
||||
deps = ["Unicode"]
|
||||
uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7"
|
||||
|
||||
[[REPL]]
|
||||
deps = ["InteractiveUtils", "Markdown", "Sockets"]
|
||||
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
|
||||
|
||||
[[Random]]
|
||||
deps = ["Serialization"]
|
||||
uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
|
||||
|
||||
[[RecipesBase]]
|
||||
git-tree-sha1 = "7bdce29bc9b2f5660a6e5e64d64d91ec941f6aa2"
|
||||
uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
|
||||
version = "0.7.0"
|
||||
|
||||
[[Reexport]]
|
||||
deps = ["Pkg"]
|
||||
git-tree-sha1 = "7b1d07f411bc8ddb7977ec7f377b97b158514fe0"
|
||||
uuid = "189a3867-3050-52da-a836-e630ba90ab69"
|
||||
version = "0.2.0"
|
||||
|
||||
[[RingBuffers]]
|
||||
deps = ["BinaryProvider", "Compat"]
|
||||
git-tree-sha1 = "a22900f141fae3e8c6f2ab9e4d48dfca274fafb8"
|
||||
uuid = "f6d8bcc6-4e01-5431-93c4-9d6004abab90"
|
||||
version = "1.2.0"
|
||||
|
||||
[[SHA]]
|
||||
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
|
||||
|
||||
[[SampledSignals]]
|
||||
deps = ["Compat", "DSP", "FFTW", "FixedPointNumbers", "IntervalSets", "LinearAlgebra", "TreeViews", "Unitful"]
|
||||
git-tree-sha1 = "ce5705b342baa4a995ba6fa7ca9aa96e6647ac91"
|
||||
uuid = "bd7594eb-a658-542f-9e75-4c4d8908c167"
|
||||
version = "2.1.0"
|
||||
|
||||
[[Serialization]]
|
||||
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
|
||||
|
||||
[[SharedArrays]]
|
||||
deps = ["Distributed", "Mmap", "Random", "Serialization"]
|
||||
uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383"
|
||||
|
||||
[[Sockets]]
|
||||
uuid = "6462fe0b-24de-5631-8697-dd941f90decc"
|
||||
|
||||
[[SparseArrays]]
|
||||
deps = ["LinearAlgebra", "Random"]
|
||||
uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
|
||||
|
||||
[[SpecialFunctions]]
|
||||
deps = ["OpenSpecFun_jll"]
|
||||
git-tree-sha1 = "268052ee908b2c086cc0011f528694f02f3e2408"
|
||||
uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
|
||||
version = "0.9.0"
|
||||
|
||||
[[Statistics]]
|
||||
deps = ["LinearAlgebra", "SparseArrays"]
|
||||
uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
|
||||
|
||||
[[Test]]
|
||||
deps = ["Distributed", "InteractiveUtils", "Logging", "Random"]
|
||||
uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
|
||||
|
||||
[[TreeViews]]
|
||||
deps = ["Test"]
|
||||
git-tree-sha1 = "8d0d7a3fe2f30d6a7f833a5f19f7c7a5b396eae6"
|
||||
uuid = "a2a6695c-b41b-5b7d-aed9-dbfdeacea5d7"
|
||||
version = "0.3.0"
|
||||
|
||||
[[UUIDs]]
|
||||
deps = ["Random", "SHA"]
|
||||
uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
|
||||
|
||||
[[Unicode]]
|
||||
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
|
||||
|
||||
[[Unitful]]
|
||||
deps = ["LinearAlgebra", "Random"]
|
||||
git-tree-sha1 = "92bdf0ccfa9612b167d0adaadef832a09971ceb0"
|
||||
uuid = "1986cc42-f94f-5a68-af5c-568840ba703d"
|
||||
version = "0.17.0"
|
||||
|
||||
[[libportaudio_jll]]
|
||||
deps = ["Libdl", "Pkg"]
|
||||
path = "/Users/sabae/.julia/dev/libportaudio_jll"
|
||||
uuid = "2d7b7beb-0762-5160-978e-1ab83a1e8a31"
|
||||
version = "19.6.0+1"
|
7
REQUIRE
7
REQUIRE
|
@ -1,7 +0,0 @@
|
|||
julia 0.6
|
||||
BinDeps 0.8.8
|
||||
SampledSignals 1.1.2
|
||||
RingBuffers 1.1.2
|
||||
Compat 0.66.0
|
||||
@osx Homebrew
|
||||
@windows WinRPM
|
21
ci_setup.jl
21
ci_setup.jl
|
@ -1,21 +0,0 @@
|
|||
VERSION >= v"0.7.0-" && using InteractiveUtils
|
||||
versioninfo()
|
||||
|
||||
if VERSION < v"0.7.0-"
|
||||
Pkg.clone(pwd(), "PortAudio")
|
||||
Pkg.build("PortAudio")
|
||||
# for now we need SampledSignals and RingBuffers master
|
||||
Pkg.checkout("SampledSignals")
|
||||
Pkg.checkout("RingBuffers")
|
||||
else
|
||||
using Pkg
|
||||
# for now we need to `clone` because there's no way to specify the
|
||||
# package name for `add`
|
||||
#Pkg.clone(pwd(), "PortAudio")
|
||||
Pkg.build("PortAudio")
|
||||
Pkg.add(PackageSpec(name="SampledSignals", rev="master"))
|
||||
Pkg.add(PackageSpec(name="RingBuffers", rev="master"))
|
||||
end
|
||||
|
||||
# add test deps manually because we'll be running test/runtests.jl manually
|
||||
#Pkg.add("Compat")
|
250
test/runtests.jl
250
test/runtests.jl
|
@ -1,197 +1,8 @@
|
|||
#!/usr/bin/env julia
|
||||
|
||||
using PortAudio
|
||||
using SampledSignals
|
||||
using RingBuffers
|
||||
using Test
|
||||
|
||||
# pull in some extra stuff we need to test the callback directly
|
||||
using PortAudio: notifyhandle, notifycb_c, shim_processcb_c
|
||||
using PortAudio: pa_shim_errmsg_t, pa_shim_info_t
|
||||
using PortAudio: PA_SHIM_ERRMSG_ERR_OVERFLOW, PA_SHIM_ERRMSG_UNDERFLOW, PA_SHIM_ERRMSG_OVERFLOW
|
||||
|
||||
# only needed for the libuv workaround
|
||||
const globalcond = Base.AsyncCondition()
|
||||
|
||||
"Setup buffers to test callback behavior"
|
||||
function setup_callback(inchans, outchans, nframes, synced)
|
||||
sourcebuf = RingBuffer{Float32}(inchans, nframes*2) # the microphone input should end up here
|
||||
sinkbuf = RingBuffer{Float32}(outchans, nframes*2) # the callback should copy this to cb_output
|
||||
errbuf = RingBuffer{pa_shim_errmsg_t}(1, 8)
|
||||
|
||||
# pass NULL for i/o we're not using
|
||||
info = pa_shim_info_t(
|
||||
inchans > 0 ? pointer(sourcebuf) : C_NULL,
|
||||
outchans > 0 ? pointer(sinkbuf) : C_NULL,
|
||||
pointer(errbuf),
|
||||
synced, notifycb_c,
|
||||
inchans > 0 ? notifyhandle(sourcebuf) : C_NULL,
|
||||
outchans > 0 ? notifyhandle(sinkbuf) : C_NULL,
|
||||
notifyhandle(errbuf),
|
||||
globalcond.handle
|
||||
)
|
||||
flags = Culong(0)
|
||||
|
||||
cb_input = rand(Float32, inchans, nframes) # simulate microphone input
|
||||
cb_output = rand(Float32, outchans, nframes) # this is where the output should go
|
||||
|
||||
function processfunc()
|
||||
ccall(shim_processcb_c, Cint,
|
||||
(Ref{Float32}, Ref{Float32}, Culong, Ref{Cvoid}, Culong, Ref{pa_shim_info_t}),
|
||||
cb_input, cb_output, nframes, C_NULL, flags, info)
|
||||
end
|
||||
|
||||
(sourcebuf, sinkbuf, errbuf, cb_input, cb_output, processfunc)
|
||||
end
|
||||
|
||||
# the process callback only has pointers (not refs) to some data, so we need
|
||||
# to make sure the references are preserved
|
||||
function wrapprocess(process, sourcebuf, sinkbuf)
|
||||
@static if VERSION >= v"0.7.0-"
|
||||
GC.@preserve sourcebuf sinkbuf begin
|
||||
process()
|
||||
end
|
||||
else
|
||||
process()
|
||||
end
|
||||
end
|
||||
|
||||
function test_callback(inchans, outchans, synced)
|
||||
nframes = 8
|
||||
(sourcebuf, sinkbuf, errbuf,
|
||||
cb_input, cb_output,
|
||||
process) = setup_callback(inchans, outchans, nframes, synced)
|
||||
if outchans > 0
|
||||
testout = rand(Float32, outchans, nframes) # generate some test data to play
|
||||
write(sinkbuf, testout) # fill the output ringbuffer
|
||||
end
|
||||
@test wrapprocess(process, sourcebuf, sinkbuf) == PortAudio.paContinue
|
||||
if outchans > 0
|
||||
# testout -> sinkbuf -> cb_output
|
||||
@test cb_output == testout
|
||||
end
|
||||
if inchans > 0
|
||||
# cb_input -> sourcebuf
|
||||
@test read(sourcebuf, nframes) == cb_input
|
||||
end
|
||||
@test framesreadable(errbuf) == 0
|
||||
end
|
||||
|
||||
"""
|
||||
test_callback_underflow(inchans, outchans; nframes=8, underfill=3, synced=false)
|
||||
|
||||
Test that the callback works on underflow conditions. underfill is the numer of
|
||||
frames we feed in, which should be less than nframes.
|
||||
"""
|
||||
function test_callback_underflow(inchans, outchans, synced)
|
||||
nframes = 8
|
||||
underfill = 3 # must be less than nframes
|
||||
(sourcebuf, sinkbuf, errbuf,
|
||||
cb_input, cb_output,
|
||||
process) = setup_callback(inchans, outchans, nframes, synced)
|
||||
outchans > 0 || error("Can't test underflow with no output")
|
||||
testout = rand(Float32, outchans, underfill)
|
||||
write(sinkbuf, testout) # underfill the output ringbuffer
|
||||
# call callback (partial underflow)
|
||||
@test wrapprocess(process, sourcebuf, sinkbuf) == PortAudio.paContinue
|
||||
@test cb_output[:, 1:underfill] == testout
|
||||
@test cb_output[:, (underfill+1):nframes] == zeros(Float32, outchans, (nframes-underfill))
|
||||
errs = readavailable(errbuf)
|
||||
if inchans > 0
|
||||
received = readavailable(sourcebuf)
|
||||
if synced
|
||||
@test size(received, 2) == underfill
|
||||
@test received == cb_input[:, 1:underfill]
|
||||
@test length(errs) == 2
|
||||
@test Set(errs) == Set([PA_SHIM_ERRMSG_UNDERFLOW, PA_SHIM_ERRMSG_OVERFLOW])
|
||||
else
|
||||
@test size(received, 2) == nframes
|
||||
@test received == cb_input
|
||||
@test length(errs) == 1
|
||||
@test errs[1] == PA_SHIM_ERRMSG_UNDERFLOW
|
||||
end
|
||||
else
|
||||
@test length(errs) == 1
|
||||
@test errs[1] == PA_SHIM_ERRMSG_UNDERFLOW
|
||||
end
|
||||
|
||||
# call again (total underflow)
|
||||
@test wrapprocess(process, sourcebuf, sinkbuf) == PortAudio.paContinue
|
||||
@test cb_output == zeros(Float32, outchans, nframes)
|
||||
errs = readavailable(errbuf)
|
||||
if inchans > 0
|
||||
received = readavailable(sourcebuf)
|
||||
if synced
|
||||
@test size(received, 2) == 0
|
||||
@test length(errs) == 2
|
||||
@test Set(errs) == Set([PA_SHIM_ERRMSG_UNDERFLOW, PA_SHIM_ERRMSG_OVERFLOW])
|
||||
else
|
||||
@test size(received, 2) == nframes
|
||||
@test received == cb_input
|
||||
@test length(errs) == 1
|
||||
@test errs[1] == PA_SHIM_ERRMSG_UNDERFLOW
|
||||
end
|
||||
else
|
||||
@test length(errs) == 1
|
||||
@test errs[1] == PA_SHIM_ERRMSG_UNDERFLOW
|
||||
end
|
||||
end
|
||||
|
||||
function test_callback_overflow(inchans, outchans, synced)
|
||||
nframes = 8
|
||||
(sourcebuf, sinkbuf, errbuf,
|
||||
cb_input, cb_output,
|
||||
process) = setup_callback(inchans, outchans, nframes, synced)
|
||||
inchans > 0 || error("Can't test overflow with no input")
|
||||
@test frameswritable(sinkbuf) == nframes*2
|
||||
|
||||
# the first time it should half-fill the input ring buffer
|
||||
if outchans > 0
|
||||
testout = rand(Float32, outchans, nframes)
|
||||
write(sinkbuf, testout)
|
||||
end
|
||||
@test framesreadable(sourcebuf) == 0
|
||||
outchans > 0 && @test frameswritable(sinkbuf) == nframes
|
||||
@test wrapprocess(process, sourcebuf, sinkbuf) == PortAudio.paContinue
|
||||
@test framesreadable(errbuf) == 0
|
||||
@test framesreadable(sourcebuf) == nframes
|
||||
outchans > 0 && @test frameswritable(sinkbuf) == nframes*2
|
||||
|
||||
# now run the process func again to completely fill the input ring buffer
|
||||
outchans > 0 && write(sinkbuf, testout)
|
||||
@test framesreadable(sourcebuf) == nframes
|
||||
outchans > 0 && @test frameswritable(sinkbuf) == nframes
|
||||
@test wrapprocess(process, sourcebuf, sinkbuf) == PortAudio.paContinue
|
||||
@test framesreadable(errbuf) == 0
|
||||
@test framesreadable(sourcebuf) == nframes*2
|
||||
outchans > 0 && @test frameswritable(sinkbuf) == nframes*2
|
||||
|
||||
# now this time the process func should overflow the input buffer
|
||||
outchans > 0 && write(sinkbuf, testout)
|
||||
@test framesreadable(sourcebuf) == nframes*2
|
||||
outchans > 0 && @test frameswritable(sinkbuf) == nframes
|
||||
@test wrapprocess(process, sourcebuf, sinkbuf) == PortAudio.paContinue
|
||||
@test framesreadable(sourcebuf) == nframes*2
|
||||
errs = readavailable(errbuf)
|
||||
if outchans > 0
|
||||
if synced
|
||||
# if input and output are synced, thec callback didn't pull from
|
||||
# the output ringbuf
|
||||
@test frameswritable(sinkbuf) == nframes
|
||||
@test cb_output == zeros(Float32, outchans, nframes)
|
||||
@test length(errs) == 2
|
||||
@test Set(errs) == Set([PA_SHIM_ERRMSG_UNDERFLOW, PA_SHIM_ERRMSG_OVERFLOW])
|
||||
else
|
||||
@test frameswritable(sinkbuf) == nframes*2
|
||||
@test length(errs) == 1
|
||||
@test errs[1] == PA_SHIM_ERRMSG_OVERFLOW
|
||||
end
|
||||
else
|
||||
@test length(errs) == 1
|
||||
@test errs[1] == PA_SHIM_ERRMSG_OVERFLOW
|
||||
end
|
||||
end
|
||||
|
||||
@testset "PortAudio Tests" begin
|
||||
@testset "Reports version" begin
|
||||
io = IOBuffer()
|
||||
|
@ -201,64 +12,7 @@ end
|
|||
@test startswith(result[1], "PortAudio V19")
|
||||
end
|
||||
|
||||
@testset "using correct shim version" begin
|
||||
@test PortAudio.shimhash() == "7570f145b3c1b5a6f0733378a45807c5fd47e30f04771e4eaa2c380d80dcd15d"
|
||||
end
|
||||
|
||||
@testset "Basic callback functionality" begin
|
||||
@testset "basic duplex (no sync)" begin
|
||||
test_callback(2, 3, false)
|
||||
end
|
||||
@testset "basic input-only (no sync)" begin
|
||||
test_callback(2, 0, false)
|
||||
end
|
||||
@testset "basic output-only (no sync)" begin
|
||||
test_callback(0, 2, false)
|
||||
end
|
||||
@testset "basic no input or output (no sync)" begin
|
||||
test_callback(0, 0, false)
|
||||
end
|
||||
@testset "basic duplex (sync)" begin
|
||||
test_callback(2, 3, true)
|
||||
end
|
||||
@testset "basic input-only (sync)" begin
|
||||
test_callback(2, 0, true)
|
||||
end
|
||||
@testset "basic output-only (sync)" begin
|
||||
test_callback(0, 2, true)
|
||||
end
|
||||
@testset "basic no input or output (sync)" begin
|
||||
test_callback(0, 0, true)
|
||||
end
|
||||
end
|
||||
|
||||
@testset "Ouput underflow" begin
|
||||
@testset "underflow duplex (nosync)" begin
|
||||
test_callback_underflow(2, 3, false)
|
||||
end
|
||||
@testset "underflow output-only (nosync)" begin
|
||||
test_callback_underflow(0, 3, false)
|
||||
end
|
||||
@testset "underflow duplex (sync)" begin
|
||||
test_callback_underflow(2, 3, true)
|
||||
end
|
||||
@testset "underflow output-only (sync)" begin
|
||||
test_callback_underflow(0, 3, true)
|
||||
end
|
||||
end
|
||||
|
||||
@testset "Input overflow" begin
|
||||
@testset "overflow duplex (nosync)" begin
|
||||
test_callback_overflow(2, 3, false)
|
||||
end
|
||||
@testset "overflow input-only (nosync)" begin
|
||||
test_callback_overflow(2, 0, false)
|
||||
end
|
||||
@testset "overflow duplex (sync)" begin
|
||||
test_callback_overflow(2, 3, true)
|
||||
end
|
||||
@testset "overflow input-only (sync)" begin
|
||||
test_callback_overflow(2, 0, true)
|
||||
end
|
||||
@testset "Can list devices without crashing" begin
|
||||
PortAudio.devices()
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue