sensor.lua 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. -- love.sensor
  2. -- @NOTE we can't test this module fully as it's hardware dependent
  3. -- however we can test methods do what is expected and can handle certain params
  4. --------------------------------------------------------------------------------
  5. --------------------------------------------------------------------------------
  6. ------------------------------------HELPERS-------------------------------------
  7. --------------------------------------------------------------------------------
  8. --------------------------------------------------------------------------------
  9. local function testIsEnabled(test, sensorType)
  10. love.sensor.setEnabled(sensorType, true)
  11. test:assertTrue(love.sensor.isEnabled(sensorType), 'check ' .. sensorType .. ' enabled')
  12. love.sensor.setEnabled(sensorType, false)
  13. test:assertFalse(love.sensor.isEnabled(sensorType), 'check ' .. sensorType .. ' disabled')
  14. end
  15. local function testGetName(test, sensorType)
  16. love.sensor.setEnabled(sensorType, true)
  17. local ok, name = pcall(love.sensor.getName, sensorType)
  18. test:assertTrue(ok, 'check sensor.getName("' .. sensorType .. '") success')
  19. test:assertEquals(type(name), 'string', 'check sensor.getName("' .. sensorType .. '") return value type')
  20. love.sensor.setEnabled(sensorType, false)
  21. ok, name = pcall(love.sensor.getName, sensorType)
  22. test:assertFalse(ok, 'check sensor.getName("' .. sensorType .. '") errors when disabled')
  23. end
  24. local function testGetData(test, sensorType)
  25. love.sensor.setEnabled(sensorType, true)
  26. local ok, x, y, z = pcall(love.sensor.getData, sensorType)
  27. test:assertTrue(ok, 'check sensor.getData("' .. sensorType .. '") success')
  28. if ok then
  29. test:assertNotNil(x)
  30. test:assertNotNil(y)
  31. test:assertNotNil(z)
  32. end
  33. love.sensor.setEnabled(sensorType, false)
  34. ok, x, y, z = pcall(love.sensor.getData, sensorType)
  35. test:assertFalse(ok, 'check sensor.getData("' .. sensorType .. '") errors when disabled')
  36. end
  37. --------------------------------------------------------------------------------
  38. --------------------------------------------------------------------------------
  39. ------------------------------------METHODS-------------------------------------
  40. --------------------------------------------------------------------------------
  41. --------------------------------------------------------------------------------
  42. -- love.sensor.hasSensor
  43. love.test.sensor.hasSensor = function(test)
  44. -- but we can make sure that the SensorTypes can be passed
  45. local accelerometer = love.sensor.hasSensor('accelerometer')
  46. local gyroscope = love.sensor.hasSensor('gyroscope')
  47. test:assertNotNil(accelerometer)
  48. test:assertNotNil(gyroscope)
  49. end
  50. -- love.sensor.isEnabled and love.sensor.setEnabled
  51. love.test.sensor.isEnabled = function(test)
  52. local accelerometer = love.sensor.hasSensor('accelerometer')
  53. local gyroscope = love.sensor.hasSensor('gyroscope')
  54. if accelerometer or gyroscope then
  55. if accelerometer then testIsEnabled(test, 'accelerometer') end
  56. if gyroscope then testIsEnabled(test, 'gyroscope') end
  57. else
  58. test:skipTest('neither accelerometer nor gyroscope are supported in this system')
  59. end
  60. end
  61. -- love.sensor.getName
  62. love.test.sensor.getName = function(test)
  63. local accelerometer = love.sensor.hasSensor('accelerometer')
  64. local gyroscope = love.sensor.hasSensor('gyroscope')
  65. if accelerometer or gyroscope then
  66. if accelerometer then testGetName(test, 'accelerometer') end
  67. if gyroscope then testGetName(test, 'gyroscope') end
  68. else
  69. test:skipTest('neither accelerometer nor gyroscope are supported in this system')
  70. end
  71. end
  72. -- love.sensor.getData
  73. love.test.sensor.getData = function(test)
  74. local accelerometer = love.sensor.hasSensor('accelerometer')
  75. local gyroscope = love.sensor.hasSensor('gyroscope')
  76. if accelerometer or gyroscope then
  77. if accelerometer then testGetData(test, 'accelerometer') end
  78. if gyroscope then testGetData(test, 'gyroscope') end
  79. else
  80. test:skipTest('neither accelerometer nor gyroscope are supported in this system')
  81. end
  82. end