Files
love/testing/tests/audio.lua
T
ell 19df8040df 0.1
Initial commit of a basic test framework, see readme.md for more

Most modules are covered with basic unit tests, and there's an example test for a graphics draw (rectangle) and object (File) - for object tests doing more scenario based so we can check multiple things together
2023-10-04 14:43:44 +01:00

296 lines
9.0 KiB
Lua

-- love.audio
-- love.audio.getActiveEffects
love.test.audio.getActiveEffects = function(test)
-- tests
test:assertNotEquals(nil, love.audio.getActiveEffects(), 'check not nil')
test:assertEquals(0, #love.audio.getActiveEffects(), 'check no effects running')
love.audio.setEffect('testeffect', {
type = 'chorus',
volume = 10
})
test:assertEquals(1, #love.audio.getActiveEffects(), 'check 1 effect running')
test:assertEquals('testeffect', love.audio.getActiveEffects()[1], 'check effect details')
end
-- love.audio.getActiveSourceCount
love.test.audio.getActiveSourceCount = function(test)
-- tests
test:assertNotEquals(nil, love.audio.getActiveSourceCount(), 'check not nil')
test:assertEquals(0, love.audio.getActiveSourceCount(), 'check 0 by default')
local testsource = love.audio.newSource('resources/click.ogg', 'static')
test:assertEquals(0, love.audio.getActiveSourceCount(), 'check not active')
love.audio.play(testsource)
test:assertEquals(1, love.audio.getActiveSourceCount(), 'check now active')
love.audio.pause()
testsource:release()
end
-- love.audio.getDistanceModel
love.test.audio.getDistanceModel = function(test)
-- tests
test:assertNotEquals(nil, love.audio.getDistanceModel(), 'check not nil')
test:assertEquals('inverseclamped', love.audio.getDistanceModel(), 'check default value')
love.audio.setDistanceModel('inverse')
test:assertEquals('inverse', love.audio.getDistanceModel(), 'check setting model')
end
-- love.audio.getDopplerScale
love.test.audio.getDopplerScale = function(test)
test:assertEquals(1, love.audio.getDopplerScale(), 'check default 1')
love.audio.setDopplerScale(0)
test:assertEquals(0, love.audio.getDopplerScale(), 'check setting to 0')
love.audio.setDopplerScale(1)
end
-- love.audio.getEffect
love.test.audio.getEffect = function(test)
-- setup
love.audio.setEffect('testeffect', {
type = 'chorus',
volume = 10
})
-- tests
test:assertEquals(nil, love.audio.getEffect('madeupname'), 'check wrong name')
test:assertNotEquals(nil, love.audio.getEffect('testeffect'), 'check not nil')
test:assertEquals('chorus', love.audio.getEffect('testeffect').type, 'check effect type')
test:assertEquals(10, love.audio.getEffect('testeffect').volume, 'check effect volume')
end
-- love.audio.getMaxSceneEffects
-- @NOTE feel like this is platform specific number so best we can do is a nil?
love.test.audio.getMaxSceneEffects = function(test)
test:assertNotEquals(nil, love.audio.getMaxSceneEffects(), 'check not nil')
end
-- love.audio.getMaxSourceEffects
-- @NOTE feel like this is platform specific number so best we can do is a nil?
love.test.audio.getMaxSourceEffects = function(test)
test:assertNotEquals(nil, love.audio.getMaxSourceEffects(), 'check not nil')
end
-- love.audio.getOrientation
-- @NOTE is there an expected default listener pos?
love.test.audio.getOrientation = function(test)
-- setup
love.audio.setOrientation(1, 2, 3, 4, 5, 6)
-- tests
local fx, fy, fz, ux, uy, uz = love.audio.getOrientation()
test:assertEquals(1, fx, 'check fx orientation')
test:assertEquals(2, fy, 'check fy orientation')
test:assertEquals(3, fz, 'check fz orientation')
test:assertEquals(4, ux, 'check ux orientation')
test:assertEquals(5, uy, 'check uy orientation')
test:assertEquals(6, uz, 'check uz orientation')
end
-- love.audio.getPosition
-- @NOTE is there an expected default listener pos?
love.test.audio.getPosition = function(test)
-- setup
love.audio.setPosition(1, 2, 3)
-- tests
local x, y, z = love.audio.getPosition()
test:assertEquals(1, x, 'check x position')
test:assertEquals(2, y, 'check y position')
test:assertEquals(3, z, 'check z position')
end
-- love.audio.getRecordingDevices
love.test.audio.getRecordingDevices = function(test)
test:assertNotEquals(nil, love.audio.getRecordingDevices(), 'check not nil')
end
-- love.audio.getVelocity
love.test.audio.getVelocity = function(test)
-- setup
love.audio.setVelocity(1, 2, 3)
-- tests
local x, y, z = love.audio.getVelocity()
test:assertEquals(1, x, 'check x velocity')
test:assertEquals(2, y, 'check y velocity')
test:assertEquals(3, z, 'check z velocity')
end
-- love.audio.getVolume
love.test.audio.getVolume = function(test)
-- setup
love.audio.setVolume(0.5)
-- tests
test:assertNotEquals(nil, love.audio.getVolume(), 'check not nil')
test:assertEquals(0.5, love.audio.getVolume(), 'check matches set')
end
-- love.audio.isEffectsSupported
love.test.audio.isEffectsSupported = function(test)
test:assertNotEquals(nil, love.audio.isEffectsSupported(), 'check not nil')
end
-- love.audio.newQueueableSource
-- @NOTE this is just basic nil checking, full obj test are in objects.lua
love.test.audio.newQueueableSource = function(test)
local source = love.audio.newQueueableSource(32, 8, 1, 8)
test:assertObject(source)
source:release()
end
-- love.audio.newSource
-- @NOTE this is just basic nil checking, full obj test are in objects.lua
love.test.audio.newSource = function(test)
-- setup
local source1 = love.audio.newSource('resources/click.ogg', 'static')
local source2 = love.audio.newSource('resources/click.ogg', 'stream')
-- tests
test:assertObject(source1)
test:assertObject(source2)
-- cleanup
source1:release()
source2:release()
end
-- love.audio.pause
love.test.audio.pause = function(test)
-- tests
local nopauses = love.audio.pause()
test:assertNotEquals(nil, nopauses, 'check not nil')
test:assertEquals(0, #nopauses, 'check nothing paused')
local source = love.audio.newSource('resources/click.ogg', 'static')
love.audio.play(source)
local onepause = love.audio.pause()
test:assertEquals(1, #onepause, 'check 1 paused')
source:release()
end
-- love.audio.play
love.test.audio.play = function(test)
-- setup
local source = love.audio.newSource('resources/click.ogg', 'static')
-- tests
love.audio.play(source)
test:assertEquals(true, source:isPlaying(), 'check something playing')
love.audio.pause()
source:release()
end
-- love.audio.setDistanceModel
love.test.audio.setDistanceModel = function(test)
-- tests
local distancemodel = {
'none', 'inverse', 'inverseclamped', 'linear', 'linearclamped',
'exponent', 'exponentclamped'
}
for d=1,#distancemodel do
love.audio.setDistanceModel(distancemodel[d])
test:assertEquals(distancemodel[d], love.audio.getDistanceModel(), 'check model set to ' .. distancemodel[d])
end
end
-- love.audio.setDopplerScale
love.test.audio.setDopplerScale = function(test)
-- tests
love.audio.setDopplerScale(0)
test:assertEquals(0, love.audio.getDopplerScale(), 'check set to 0')
love.audio.setDopplerScale(1)
test:assertEquals(1, love.audio.getDopplerScale(), 'check set to 1')
end
-- love.audio.setEffect
love.test.audio.setEffect = function(test)
-- tests
local effect = love.audio.setEffect('testeffect', {
type = 'chorus',
volume = 10
})
test:assertEquals(true, effect, 'check effect created')
local settings = love.audio.getEffect('testeffect')
test:assertEquals('chorus', settings.type, 'check effect type')
test:assertEquals(10, settings.volume, 'check effect volume')
end
-- love.audio.setMixWithSystem
love.test.audio.setMixWithSystem = function(test)
test:assertNotEquals(nil, love.audio.setMixWithSystem(true), 'check not nil')
end
-- love.audio.setOrientation
love.test.audio.setOrientation = function(test)
-- setup
love.audio.setOrientation(1, 2, 3, 4, 5, 6)
-- tests
local fx, fy, fz, ux, uy, uz = love.audio.getOrientation()
test:assertEquals(1, fx, 'check fx orientation')
test:assertEquals(2, fy, 'check fy orientation')
test:assertEquals(3, fz, 'check fz orientation')
test:assertEquals(4, ux, 'check ux orientation')
test:assertEquals(5, uy, 'check uy orientation')
test:assertEquals(6, uz, 'check uz orientation')
end
-- love.audio.setPosition
love.test.audio.setPosition = function(test)
-- setup
love.audio.setPosition(1, 2, 3)
-- tests
local x, y, z = love.audio.getPosition()
test:assertEquals(1, x, 'check x position')
test:assertEquals(2, y, 'check y position')
test:assertEquals(3, z, 'check z position')
end
-- love.audio.setVelocity
love.test.audio.setVelocity = function(test)
-- setup
love.audio.setVelocity(1, 2, 3)
-- tests
local x, y, z = love.audio.getVelocity()
test:assertEquals(1, x, 'check x velocity')
test:assertEquals(2, y, 'check y velocity')
test:assertEquals(3, z, 'check z velocity')
end
-- love.audio.setVolume
love.test.audio.setVolume = function(test)
-- setup
love.audio.setVolume(0.5)
-- tests
test:assertNotEquals(nil, love.audio.getVolume(), 'check not nil')
test:assertEquals(0.5, love.audio.getVolume(), 'check set to 0.5')
end
-- love.audio.stop
love.test.audio.stop = function(test)
-- setup
local source = love.audio.newSource('resources/click.ogg', 'static')
love.audio.play(source)
-- tests
test:assertEquals(true, source:isPlaying(), 'check is playing')
love.audio.stop()
test:assertEquals(false, source:isPlaying(), 'check stopped playing')
source:release()
end