mouse.lua 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. -- love.mouse
  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. ------------------------------------METHODS-------------------------------------
  7. --------------------------------------------------------------------------------
  8. --------------------------------------------------------------------------------
  9. -- love.mouse.getCursor
  10. love.test.mouse.getCursor = function(test)
  11. local cursor = love.mouse.getCursor()
  12. test:assertEquals(nil, cursor, 'check nil initially')
  13. -- try setting a cursor to check return if supported
  14. if love.mouse.isCursorSupported() then
  15. love.mouse.setCursor(love.mouse.getSystemCursor("hand"))
  16. local newcursor = love.mouse.getCursor()
  17. test:assertObject(newcursor)
  18. love.mouse.setCursor()
  19. end
  20. end
  21. -- love.mouse.getPosition
  22. love.test.mouse.getPosition = function(test)
  23. love.mouse.setPosition(0, 0) -- cant predict
  24. local x, y = love.mouse.getPosition()
  25. test:assertEquals(0, x, 'check x pos')
  26. test:assertEquals(0, y, 'check y pos')
  27. end
  28. -- love.mouse.getRelativeMode
  29. love.test.mouse.getRelativeMode = function(test)
  30. local enabled = love.mouse.getRelativeMode()
  31. test:assertEquals(false, enabled, 'check relative mode')
  32. love.mouse.setRelativeMode(true)
  33. test:assertEquals(true, love.mouse.getRelativeMode(), 'check enabling')
  34. end
  35. -- love.mouse.getSystemCursor
  36. love.test.mouse.getSystemCursor = function(test)
  37. local hand = love.mouse.getSystemCursor('hand')
  38. test:assertObject(hand)
  39. local ok, err = pcall(love.mouse.getSystemCursor, 'love')
  40. test:assertEquals(false, ok, 'check invalid cursor')
  41. end
  42. -- love.mouse.getX
  43. love.test.mouse.getX = function(test)
  44. love.mouse.setPosition(0, 0) -- cant predict
  45. local x = love.mouse.getX()
  46. test:assertEquals(0, x, 'check x pos')
  47. love.mouse.setX(10)
  48. test:assertEquals(10, love.mouse.getX(), 'check set x')
  49. end
  50. -- love.mouse.getY
  51. love.test.mouse.getY = function(test)
  52. love.mouse.setPosition(0, 0) -- cant predict
  53. local y = love.mouse.getY()
  54. test:assertEquals(0, y, 'check x pos')
  55. love.mouse.setY(10)
  56. test:assertEquals(10, love.mouse.getY(), 'check set y')
  57. end
  58. -- love.mouse.isCursorSupported
  59. love.test.mouse.isCursorSupported = function(test)
  60. test:assertNotNil(love.mouse.isCursorSupported())
  61. end
  62. -- love.mouse.isDown
  63. love.test.mouse.isDown = function(test)
  64. test:assertNotNil(love.mouse.isDown())
  65. end
  66. -- love.mouse.isGrabbed
  67. love.test.mouse.isGrabbed = function(test)
  68. test:assertNotNil(love.mouse.isGrabbed())
  69. end
  70. -- love.mouse.isVisible
  71. love.test.mouse.isVisible = function(test)
  72. local visible = love.mouse.isVisible()
  73. test:assertEquals(true, visible, 'check visible default')
  74. love.mouse.setVisible(false)
  75. test:assertEquals(false, love.mouse.isVisible(), 'check invisible')
  76. love.mouse.setVisible(true)
  77. end
  78. -- love.mouse.newCursor
  79. love.test.mouse.newCursor = function(test)
  80. -- new cursor might fail if not supported
  81. if love.mouse.isCursorSupported() then
  82. local cursor = love.mouse.newCursor('resources/love.png', 0, 0)
  83. test:assertObject(cursor)
  84. else
  85. test:skipTest('cursor not supported on this system')
  86. end
  87. end
  88. -- love.mouse.setCursor
  89. love.test.mouse.setCursor = function(test)
  90. -- cant set cursor if not supported
  91. if love.mouse.isCursorSupported() then
  92. love.mouse.setCursor()
  93. test:assertEquals(nil, love.mouse.getCursor(), 'check reset')
  94. love.mouse.setCursor(love.mouse.getSystemCursor('hand'))
  95. test:assertObject(love.mouse.getCursor())
  96. else
  97. test:skipTest('cursor not supported on this system')
  98. end
  99. end
  100. -- love.mouse.setGrabbed
  101. -- @NOTE can fail if you move the mouse a bunch while the test runs
  102. love.test.mouse.setGrabbed = function(test)
  103. test:assertEquals(false, love.mouse.isGrabbed(), 'check not grabbed')
  104. love.mouse.setGrabbed(true)
  105. test:assertEquals(true, love.mouse.isGrabbed(), 'check now grabbed')
  106. love.mouse.setGrabbed(false)
  107. end
  108. -- love.mouse.setPosition
  109. love.test.mouse.setPosition = function(test)
  110. love.mouse.setPosition(10, 10)
  111. local x, y = love.mouse.getPosition()
  112. test:assertEquals(10, x, 'check x position')
  113. test:assertEquals(10, y, 'check y position')
  114. love.mouse.setPosition(15, 20)
  115. local x2, y2 = love.mouse.getPosition()
  116. test:assertEquals(15, x2, 'check new x position')
  117. test:assertEquals(20, y2, 'check new y position')
  118. end
  119. -- love.mouse.setRelativeMode
  120. love.test.mouse.setRelativeMode = function(test)
  121. love.mouse.setRelativeMode(true)
  122. local enabled = love.mouse.getRelativeMode()
  123. test:assertEquals(true, enabled, 'check relative mode')
  124. love.mouse.setRelativeMode(false)
  125. test:assertEquals(false, love.mouse.getRelativeMode(), 'check disabling')
  126. end
  127. -- love.mouse.setVisible
  128. love.test.mouse.setVisible = function(test)
  129. local visible = love.mouse.isVisible()
  130. test:assertEquals(true, visible, 'check visible default')
  131. love.mouse.setVisible(false)
  132. test:assertEquals(false, love.mouse.isVisible(), 'check invisible')
  133. love.mouse.setVisible(true)
  134. end
  135. -- love.mouse.setX
  136. love.test.mouse.setX = function(test)
  137. love.mouse.setX(30)
  138. local x = love.mouse.getX()
  139. test:assertEquals(30, x, 'check x pos')
  140. love.mouse.setX(10)
  141. test:assertEquals(10, love.mouse.getX(), 'check set x')
  142. end
  143. -- love.mouse.setY
  144. love.test.mouse.setY = function(test)
  145. love.mouse.setY(12)
  146. local y = love.mouse.getY()
  147. test:assertEquals(12, y, 'check x pos')
  148. love.mouse.setY(10)
  149. test:assertEquals(10, love.mouse.getY(), 'check set y')
  150. end