Browse Source

Test: Add tests for love.sensors.

Miku AuahDark 1 year ago
parent
commit
50295fdb8a
1 changed files with 87 additions and 0 deletions
  1. 87 0
      testing/tests/sensor.lua

+ 87 - 0
testing/tests/sensor.lua

@@ -2,6 +2,51 @@
 -- @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')
+
+  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
+
+
+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 +62,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