diff --git a/testing/tests/sensor.lua b/testing/tests/sensor.lua index fcf3379dc..56c5da7b5 100644 --- a/testing/tests/sensor.lua +++ b/testing/tests/sensor.lua @@ -2,6 +2,47 @@ -- @NOTE we can't test this module fully as it's hardware dependent -- however we can test methods do what is expected and can handle certain params +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- +------------------------------------HELPERS------------------------------------- +-------------------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +local function testIsEnabled(test, sensorType) + love.sensor.setEnabled(sensorType, true) + test:assertTrue(love.sensor.isEnabled(sensorType), 'check ' .. sensorType .. ' enabled') + love.sensor.setEnabled(sensorType, false) + test:assertFalse(love.sensor.isEnabled(sensorType), 'check ' .. sensorType .. ' disabled') +end + + +local function testGetName(test, sensorType) + love.sensor.setEnabled(sensorType, true) + local ok, name = pcall(love.sensor.getName, sensorType) + test:assertTrue(ok, 'check sensor.getName("' .. sensorType .. '") success') + test:assertEquals(type(name), 'string', 'check sensor.getName("' .. sensorType .. '") return value type') + + love.sensor.setEnabled(sensorType, false) + ok, name = pcall(love.sensor.getName, sensorType) + test:assertFalse(ok, 'check sensor.getName("' .. sensorType .. '") errors when disabled') +end + + +local function testGetData(test, sensorType) + love.sensor.setEnabled(sensorType, true) + local ok, x, y, z = pcall(love.sensor.getData, sensorType) + test:assertTrue(ok, 'check sensor.getData("' .. sensorType .. '") success') + if ok then + test:assertNotNil(x) + test:assertNotNil(y) + test:assertNotNil(z) + end + + love.sensor.setEnabled(sensorType, false) + ok, x, y, z = pcall(love.sensor.getData, sensorType) + test:assertFalse(ok, 'check sensor.getData("' .. sensorType .. '") errors when disabled') +end + -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ------------------------------------METHODS------------------------------------- @@ -17,3 +58,45 @@ love.test.sensor.hasSensor = function(test) test:assertNotNil(accelerometer) test:assertNotNil(gyroscope) end + + +-- love.sensor.isEnabled and love.sensor.setEnabled +love.test.sensor.isEnabled = function(test) + local accelerometer = love.sensor.hasSensor('accelerometer') + local gyroscope = love.sensor.hasSensor('gyroscope') + + if accelerometer or gyroscope then + if accelerometer then testIsEnabled(test, 'accelerometer') end + if gyroscope then testIsEnabled(test, 'gyroscope') end + else + test:skipTest('neither accelerometer nor gyroscope are supported in this system') + end +end + + +-- love.sensor.getName +love.test.sensor.getName = function(test) + local accelerometer = love.sensor.hasSensor('accelerometer') + local gyroscope = love.sensor.hasSensor('gyroscope') + + if accelerometer or gyroscope then + if accelerometer then testGetName(test, 'accelerometer') end + if gyroscope then testGetName(test, 'gyroscope') end + else + test:skipTest('neither accelerometer nor gyroscope are supported in this system') + end +end + + +-- love.sensor.getData +love.test.sensor.getData = function(test) + local accelerometer = love.sensor.hasSensor('accelerometer') + local gyroscope = love.sensor.hasSensor('gyroscope') + + if accelerometer or gyroscope then + if accelerometer then testGetData(test, 'accelerometer') end + if gyroscope then testGetData(test, 'gyroscope') end + else + test:skipTest('neither accelerometer nor gyroscope are supported in this system') + end +end