mirror of
https://github.com/love2d/love.git
synced 2026-08-12 08:30:56 +02:00
1ecc8a1fd9
xvfb doesn't support those operations.
400 lines
12 KiB
Lua
400 lines
12 KiB
Lua
-- love.window
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
--------------------------------------------------------------------------------
|
|
----------------------------------METHODS---------------------------------------
|
|
--------------------------------------------------------------------------------
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
-- love.window.focus
|
|
love.test.window.focus = function(test)
|
|
-- cant test as doesnt return anything
|
|
test:assertEquals('function', type(love.window.focus), 'check method exists')
|
|
end
|
|
|
|
|
|
-- love.window.fromPixels
|
|
love.test.window.fromPixels = function(test)
|
|
-- check dpi/pixel ratio as expected
|
|
local dpi = love.window.getDPIScale()
|
|
local pixels = love.window.fromPixels(100)
|
|
test:assertEquals(100/dpi, pixels, 'check dpi ratio')
|
|
end
|
|
|
|
|
|
-- love.window.getDPIScale
|
|
-- @NOTE dependent on hardware so best can do is not nil
|
|
love.test.window.getDPIScale = function(test)
|
|
test:assertNotNil(test)
|
|
end
|
|
|
|
|
|
-- love.window.getDesktopDimensions
|
|
-- @NOTE dependent on hardware so best can do is not nil
|
|
love.test.window.getDesktopDimensions = function(test)
|
|
local w, h = love.window.getDesktopDimensions()
|
|
test:assertNotNil(w)
|
|
test:assertNotNil(h)
|
|
end
|
|
|
|
|
|
-- love.window.getDisplayCount
|
|
-- @NOTE cant wait for the test suite to be run headless and fail here
|
|
love.test.window.getDisplayCount = function(test)
|
|
test:assertGreaterEqual(1, love.window.getDisplayCount(), 'check 1 display')
|
|
end
|
|
|
|
|
|
-- love.window.getDisplayName
|
|
-- @NOTE dependent on hardware so best can do is not nil
|
|
love.test.window.getDisplayName = function(test)
|
|
test:assertNotNil(love.window.getDisplayName(1))
|
|
end
|
|
|
|
|
|
-- love.window.getDisplayOrientation
|
|
-- @NOTE dependent on hardware so best can do is not nil
|
|
love.test.window.getDisplayOrientation = function(test)
|
|
test:assertNotNil(love.window.getDisplayOrientation(1))
|
|
end
|
|
|
|
|
|
-- love.window.getFullscreen
|
|
love.test.window.getFullscreen = function(test)
|
|
if GITHUB_RUNNER and test:isOS('Linux') then
|
|
return test:skipTest("xvfb on Linux doesn't support fullscreen")
|
|
end
|
|
|
|
-- check not fullscreen to start
|
|
test:assertFalse(love.window.getFullscreen(), 'check not fullscreen')
|
|
love.window.setFullscreen(true)
|
|
-- check now fullscreen
|
|
test:assertTrue(love.window.getFullscreen(), 'check now fullscreen')
|
|
love.window.setFullscreen(false) -- reset
|
|
end
|
|
|
|
|
|
-- love.window.getFullscreenModes
|
|
-- @NOTE dependent on hardware so best can do is not nil
|
|
love.test.window.getFullscreenModes = function(test)
|
|
test:assertNotNil(love.window.getFullscreenModes(1))
|
|
end
|
|
|
|
|
|
-- love.window.getIcon
|
|
love.test.window.getIcon = function(test)
|
|
-- check icon nil by default if not set
|
|
test:assertEquals(nil, love.window.getIcon(), 'check nil by default')
|
|
local icon = love.image.newImageData('resources/love.png')
|
|
-- check getting icon not nil after setting
|
|
love.window.setIcon(icon)
|
|
test:assertNotNil(love.window.getIcon())
|
|
end
|
|
|
|
|
|
-- love.window.getMode
|
|
-- @NOTE could prob add more checks on the flags here based on conf.lua
|
|
love.test.window.getMode = function(test)
|
|
local w, h, flags = love.window.getMode()
|
|
test:assertEquals(360, w, 'check w')
|
|
test:assertEquals(240, h, 'check h')
|
|
test:assertFalse(flags["fullscreen"], 'check fullscreen')
|
|
end
|
|
|
|
|
|
-- love.window.getPosition
|
|
-- @NOTE anything we could check display index agaisn't in getPosition return?
|
|
love.test.window.getPosition = function(test)
|
|
love.window.setPosition(100, 100, 1)
|
|
local x, y, _ = love.window.getPosition()
|
|
test:assertEquals(100, x, 'check position x')
|
|
test:assertEquals(100, y, 'check position y')
|
|
end
|
|
|
|
|
|
-- love.window.getSafeArea
|
|
-- @NOTE dependent on hardware so best can do is not nil
|
|
love.test.window.getSafeArea = function(test)
|
|
local x, y, w, h = love.window.getSafeArea()
|
|
test:assertNotNil(x)
|
|
test:assertNotNil(y)
|
|
test:assertNotNil(w)
|
|
test:assertNotNil(h)
|
|
end
|
|
|
|
|
|
-- love.window.getTitle
|
|
love.test.window.getTitle = function(test)
|
|
-- check title returned is what was set
|
|
love.window.setTitle('love.testing')
|
|
test:assertEquals('love.testing', love.window.getTitle(), 'check title match')
|
|
love.window.setTitle('love.test')
|
|
end
|
|
|
|
|
|
-- love.window.getVSync
|
|
love.test.window.getVSync = function(test)
|
|
test:assertNotNil(love.window.getVSync())
|
|
end
|
|
|
|
|
|
-- love.window.hasFocus
|
|
-- @NOTE cant really test as cant force focus
|
|
love.test.window.hasFocus = function(test)
|
|
test:assertNotNil(love.window.hasFocus())
|
|
end
|
|
|
|
|
|
-- love.window.hasMouseFocus
|
|
-- @NOTE cant really test as cant force focus
|
|
love.test.window.hasMouseFocus = function(test)
|
|
test:assertNotNil(love.window.hasMouseFocus())
|
|
end
|
|
|
|
|
|
-- love.window.isDisplaySleepEnabled
|
|
love.test.window.isDisplaySleepEnabled = function(test)
|
|
test:assertNotNil(love.window.isDisplaySleepEnabled())
|
|
-- check disabled
|
|
love.window.setDisplaySleepEnabled(false)
|
|
test:assertFalse(love.window.isDisplaySleepEnabled(), 'check sleep disabled')
|
|
-- check enabled
|
|
love.window.setDisplaySleepEnabled(true)
|
|
test:assertTrue(love.window.isDisplaySleepEnabled(), 'check sleep enabled')
|
|
end
|
|
|
|
|
|
-- love.window.isMaximized
|
|
love.test.window.isMaximized = function(test)
|
|
if GITHUB_RUNNER and test:isOS('Linux') then
|
|
return test:skipTest("xvfb on Linux doesn't support window maximization")
|
|
end
|
|
|
|
test:assertFalse(love.window.isMaximized(), 'check window not maximized')
|
|
love.window.maximize()
|
|
test:waitFrames(10)
|
|
-- on MACOS maximize wont get recognised immedietely so wait a few frames
|
|
test:assertTrue(love.window.isMaximized(), 'check window now maximized')
|
|
love.window.restore()
|
|
end
|
|
|
|
|
|
-- love.window.isMinimized
|
|
love.test.window.isMinimized = function(test)
|
|
if GITHUB_RUNNER and test:isOS('Linux') then
|
|
return test:skipTest("xvfb on Linux doesn't support window minimization")
|
|
end
|
|
|
|
-- check not minimized to start
|
|
test:assertFalse(love.window.isMinimized(), 'check window not minimized')
|
|
-- try to minimize
|
|
love.window.minimize()
|
|
test:waitFrames(10)
|
|
-- on linux minimize won't get recognized immediately, so wait a few frames
|
|
test:assertTrue(love.window.isMinimized(), 'check window minimized')
|
|
love.window.restore()
|
|
end
|
|
|
|
|
|
-- love.window.isOpen
|
|
love.test.window.isOpen = function(test)
|
|
-- check open initially
|
|
test:assertTrue(love.window.isOpen(), 'check window open')
|
|
-- we check closing in test.window.close
|
|
end
|
|
|
|
|
|
-- love.window.isVisible
|
|
love.test.window.isVisible = function(test)
|
|
-- check visible initially
|
|
test:assertTrue(love.window.isVisible(), 'check window visible')
|
|
-- we check closing in test.window.close
|
|
end
|
|
|
|
|
|
-- love.window.maximize
|
|
love.test.window.maximize = function(test)
|
|
if GITHUB_RUNNER and test:isOS('Linux') then
|
|
return test:skipTest("xvfb on Linux doesn't support window maximization")
|
|
end
|
|
|
|
test:assertFalse(love.window.isMaximized(), 'check window not maximized')
|
|
-- check maximizing is set
|
|
love.window.maximize()
|
|
test:waitFrames(10)
|
|
-- on macos we need to wait a few frames
|
|
test:assertTrue(love.window.isMaximized(), 'check window maximized')
|
|
love.window.restore()
|
|
end
|
|
|
|
|
|
-- love.window.minimize
|
|
love.test.window.minimize = function(test)
|
|
if GITHUB_RUNNER and test:isOS('Linux') then
|
|
return test:skipTest("xvfb on Linux doesn't support window minimization")
|
|
end
|
|
|
|
test:assertFalse(love.window.isMinimized(), 'check window not minimized')
|
|
-- check minimizing is set
|
|
love.window.minimize()
|
|
test:waitFrames(10)
|
|
-- on linux we need to wait a few frames
|
|
test:assertTrue(love.window.isMinimized(), 'check window maximized')
|
|
love.window.restore()
|
|
end
|
|
|
|
|
|
-- love.window.requestAttention
|
|
love.test.window.requestAttention = function(test)
|
|
test:skipTest('cant test this worked')
|
|
end
|
|
|
|
|
|
-- love.window.restore
|
|
love.test.window.restore = function(test)
|
|
if GITHUB_RUNNER and test:isOS('Linux') then
|
|
return test:skipTest("xvfb on Linux doesn't support window minimization")
|
|
end
|
|
|
|
-- check minimized to start
|
|
love.window.minimize()
|
|
test:waitFrames(10)
|
|
love.window.restore()
|
|
test:waitFrames(10)
|
|
-- check restoring the state of the window
|
|
test:assertFalse(love.window.isMinimized(), 'check window restored')
|
|
end
|
|
|
|
|
|
-- love.window.setDisplaySleepEnabled
|
|
love.test.window.setDisplaySleepEnabled = function(test)
|
|
-- check disabling sleep
|
|
love.window.setDisplaySleepEnabled(false)
|
|
test:assertFalse(love.window.isDisplaySleepEnabled(), 'check sleep disabled')
|
|
-- check setting it back to enabled
|
|
love.window.setDisplaySleepEnabled(true)
|
|
test:assertTrue(love.window.isDisplaySleepEnabled(), 'check sleep enabled')
|
|
end
|
|
|
|
|
|
-- love.window.setFullscreen
|
|
love.test.window.setFullscreen = function(test)
|
|
if GITHUB_RUNNER and test:isOS('Linux') then
|
|
return test:skipTest("xvfb on Linux doesn't support fullscreen")
|
|
end
|
|
|
|
-- check fullscreen is set
|
|
love.window.setFullscreen(true)
|
|
test:assertTrue(love.window.getFullscreen(), 'check fullscreen')
|
|
-- check setting back to normal
|
|
love.window.setFullscreen(false)
|
|
test:assertFalse(love.window.getFullscreen(), 'check not fullscreen')
|
|
end
|
|
|
|
|
|
-- love.window.setIcon
|
|
-- @NOTE could check the image data itself?
|
|
love.test.window.setIcon = function(test)
|
|
-- check setting an icon returns the val
|
|
local icon = love.image.newImageData('resources/love.png')
|
|
love.window.setIcon(icon)
|
|
test:assertNotEquals(nil, love.window.getIcon(), 'check icon not nil')
|
|
end
|
|
|
|
|
|
-- love.window.setMode
|
|
-- @NOTE same as getMode could be checking more flag properties
|
|
love.test.window.setMode = function(test)
|
|
-- set window mode
|
|
love.window.setMode(512, 512, {
|
|
fullscreen = false,
|
|
resizable = false
|
|
})
|
|
-- check what we set is returned
|
|
local width, height, flags = love.window.getMode()
|
|
test:assertEquals(512, width, 'check window w match')
|
|
test:assertEquals(512, height, 'check window h match')
|
|
test:assertFalse(flags["fullscreen"], 'check window not fullscreen')
|
|
test:assertFalse(flags["resizable"], 'check window not resizeable')
|
|
love.window.setMode(360, 240, {
|
|
fullscreen = false,
|
|
resizable = true
|
|
})
|
|
end
|
|
|
|
-- love.window.setPosition
|
|
love.test.window.setPosition = function(test)
|
|
-- check position is returned
|
|
love.window.setPosition(100, 100, 1)
|
|
test:waitFrames(10)
|
|
local x, y, _ = love.window.getPosition()
|
|
test:assertEquals(100, x, 'check position x')
|
|
test:assertEquals(100, y, 'check position y')
|
|
end
|
|
|
|
|
|
-- love.window.setTitle
|
|
love.test.window.setTitle = function(test)
|
|
-- check setting title val is returned
|
|
love.window.setTitle('love.testing')
|
|
test:assertEquals('love.testing', love.window.getTitle(), 'check title matches')
|
|
love.window.setTitle('love.test')
|
|
end
|
|
|
|
|
|
-- love.window.setVSync
|
|
love.test.window.setVSync = function(test)
|
|
love.window.setVSync(0)
|
|
test:assertNotNil(love.window.getVSync())
|
|
end
|
|
|
|
|
|
-- love.window.showMessageBox
|
|
-- @NOTE if running headless would need to skip anyway cos can't press it
|
|
love.test.window.showMessageBox = function(test)
|
|
test:skipTest('cant test this worked')
|
|
end
|
|
|
|
|
|
-- love.window.toPixels
|
|
love.test.window.toPixels = function(test)
|
|
-- check dpi/pixel ratio is as expected
|
|
local dpi = love.window.getDPIScale()
|
|
local pixels = love.window.toPixels(50)
|
|
test:assertEquals(50*dpi, pixels, 'check dpi ratio')
|
|
end
|
|
|
|
|
|
-- love.window.updateMode
|
|
love.test.window.updateMode = function(test)
|
|
-- set initial mode
|
|
love.window.setMode(512, 512, {
|
|
fullscreen = false,
|
|
resizable = false
|
|
})
|
|
-- update mode with some props but not others
|
|
love.window.updateMode(360, 240, nil)
|
|
-- check only changed values changed
|
|
local width, height, flags = love.window.getMode()
|
|
test:assertEquals(360, width, 'check window w match')
|
|
test:assertEquals(240, height, 'check window h match')
|
|
test:assertFalse(flags["fullscreen"], 'check window not fullscreen')
|
|
test:assertFalse(flags["resizable"], 'check window not resizeable')
|
|
love.window.setMode(360, 240, { -- reset
|
|
fullscreen = false,
|
|
resizable = true
|
|
})
|
|
|
|
-- test different combinations of the backbuffer depth/stencil buffer.
|
|
test:waitFrames(1)
|
|
love.window.updateMode(360, 240, {depth = false, stencil = false})
|
|
test:waitFrames(1)
|
|
love.window.updateMode(360, 240, {depth = true, stencil = true})
|
|
test:waitFrames(1)
|
|
love.window.updateMode(360, 240, {depth = true, stencil = false})
|
|
test:waitFrames(1)
|
|
love.window.updateMode(360, 240, {depth = false, stencil = true})
|
|
end
|