Files
love/testing/tests/window.lua
T
ell 19df8040df 0.1
Initial commit of a basic test framework, see readme.md for more

Most modules are covered with basic unit tests, and there's an example test for a graphics draw (rectangle) and object (File) - for object tests doing more scenario based so we can check multiple things together
2023-10-04 14:43:44 +01:00

336 lines
10 KiB
Lua

-- love.window
-- love.window.close
-- @NOTE closing window should cause graphics to no longer be active
love.test.window.close = function(test)
love.window.close()
local active = false
if love.graphics ~= nil then active = love.graphics.isActive() end
test:assertEquals(false, active, 'check window active')
love.window.setMode(256, 256) -- reset
end
-- love.window.fromPixels
-- @NOTE dependent on the DPI value returned I think
love.test.window.fromPixels = function(test)
local dpi = love.window.getDPIScale()
local pixels = love.window.fromPixels(100)
test:assertEquals(100/dpi, pixels, 'check dpi ratio')
end
-- love.window.getDPIScale
-- @NOTE i dont think there's a clever way to check this
love.test.window.getDPIScale = function(test)
test:assertNotEquals(nil, test, 'check not nil')
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:assertNotEquals(nil, w, 'check not nil')
test:assertNotEquals(nil, h, 'check not nil')
end
-- love.window.getDisplayCount
-- @NOTE cant wait for the test suite to be run headless and fail here
love.test.window.getDisplayCount = function(test)
local count = love.window.getDisplayCount()
test:assertGreaterEqual(1, count, 'check 1 display')
end
-- love.window.getDisplayName
-- @NOTE dependent on hardware so best can do is not nil
love.test.window.getDisplayName = function(test)
local name = love.window.getDisplayName(1)
test:assertNotEquals(nil, name, 'check not nil')
end
-- love.window.getDisplayOrientation
-- @NOTE dependent on hardware so best can do is not nil
love.test.window.getDisplayOrientation = function(test)
local orientation = love.window.getDisplayOrientation(1)
test:assertNotEquals(nil, orientation, 'check not nil')
end
-- love.window.getFullscreen
love.test.window.getFullscreen = function(test)
test:assertEquals(false, love.window.getFullscreen(), 'check not fullscreen')
love.window.setFullscreen(true)
test:assertEquals(true, love.window.getFullscreen(), 'check now fullscreen')
love.window.setFullscreen(false)
end
-- love.window.getFullscreenModes
-- @NOTE dependent on hardware so best can do is not nil
love.test.window.getFullscreenModes = function(test)
local modes = love.window.getFullscreenModes(1)
test:assertNotEquals(nil, modes, 'check not nil')
end
-- love.window.getIcon
love.test.window.getIcon = function(test)
test:assertEquals(nil, love.window.getIcon(), 'check nil by default') -- nil if not set
local icon = love.image.newImageData('resources/love.png')
love.window.setIcon(icon)
test:assertNotEquals(nil, love.window.getIcon(), 'check not nil')
icon:release()
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(256, w, 'check w')
test:assertEquals(256, h, 'check h')
test:assertEquals(false, 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:assertNotEquals(nil, x, 'check not nil')
test:assertNotEquals(nil, y, 'check not nil')
test:assertNotEquals(nil, w, 'check not nil')
test:assertNotEquals(nil, h, 'check not nil')
end
-- love.window.getTitle
love.test.window.getTitle = function(test)
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:assertNotEquals(nil, love.window.getVSync(), 'check not nil')
love.window.setVSync(false)
test:assertEquals(0, love.window.getVSync(), 'check vsync off')
love.window.setVSync(true)
test:assertEquals(1, love.window.getVSync(), 'check vsync on')
end
-- love.window.hasFocus
-- @NOTE cant really test as cant force focus?
love.test.window.hasFocus = function(test)
test:assertNotEquals(nil, love.window.hasFocus(), 'check not nil')
end
-- love.window.hasMouseFocus
-- @NOTE cant really test as cant force focus?
love.test.window.hasMouseFocus = function(test)
test:assertNotEquals(nil, love.window.hasMouseFocus(), 'check not nil')
end
-- love.window.isDisplaySleepEnabled
love.test.window.isDisplaySleepEnabled = function(test)
test:assertNotEquals(nil, love.window.isDisplaySleepEnabled(), 'check not nil')
love.window.setDisplaySleepEnabled(false)
test:assertEquals(false, love.window.isDisplaySleepEnabled(), 'check sleep disabled')
love.window.setDisplaySleepEnabled(true)
test:assertEquals(true, love.window.isDisplaySleepEnabled(), 'check sleep enabled')
end
-- love.window.isMaximized
love.test.window.isMaximized = function(test)
love.window.minimize()
test:assertEquals(false, love.window.isMaximized(), 'check window maximized')
love.window.maximize()
test:assertEquals(true, love.window.isMaximized(), 'check window not maximized')
love.window.restore()
end
-- love.window.isMinimized
love.test.window.isMinimized = function(test)
test:assertEquals(false, love.window.isMinimized(), 'check window not minimized')
love.window.minimize()
test:assertEquals(true, love.window.isMinimized(), 'check window minimized')
love.window.restore()
end
-- love.window.isOpen
love.test.window.isOpen = function(test)
test:assertEquals(true, love.window.isOpen(), 'check window open')
love.window.close()
test:assertEquals(false, love.window.isOpen(), 'check window closed')
love.window.setMode(256, 256) -- reset
end
-- love.window.isVisible
love.test.window.isVisible = function(test)
test:assertEquals(true, love.window.isVisible(), 'check window visible')
love.window.close()
test:assertEquals(false, love.window.isVisible(), 'check window not visible')
love.window.setMode(256, 256) -- reset
end
-- love.window.maximize
love.test.window.maximize = function(test)
love.window.maximize()
test:assertEquals(true, love.window.isMaximized(), 'check window maximized')
love.window.restore()
end
-- love.window.minimize
love.test.window.minimize = function(test)
love.window.minimize()
test:assertEquals(true, love.window.isMinimized(), 'check window minimized')
love.window.restore()
end
-- love.window.requestAttention
love.window.requestAttention = function(test)
test:skipTest('cant really test this')
end
-- love.window.restore
love.test.window.restore = function(test)
love.window.minimize()
test:assertEquals(true, love.window.isMinimized(), 'check window minimized')
love.window.restore()
test:assertEquals(false, love.window.isMinimized(), 'check window restored')
end
-- love.window.setDisplaySleepEnabled
love.test.window.setDisplaySleepEnabled = function(test)
love.window.setDisplaySleepEnabled(false)
test:assertEquals(false, love.window.isDisplaySleepEnabled(), 'check sleep disabled')
love.window.setDisplaySleepEnabled(true)
test:assertEquals(true, love.window.isDisplaySleepEnabled(), 'check sleep enabled')
end
-- love.window.setFullscreen
love.test.window.setFullscreen = function(test)
love.window.setFullscreen(true)
test:assertEquals(true, love.window.getFullscreen(), 'check fullscreen')
love.window.setFullscreen(false)
test:assertEquals(false, love.window.getFullscreen(), 'check not fullscreen')
end
-- love.window.setIcon
-- @NOTE could check the image data itself?
love.test.window.setIcon = function(test)
local icon = love.image.newImageData('resources/love.png')
love.window.setIcon(icon)
test:assertNotEquals(nil, love.window.getIcon(), 'check icon not nil')
icon:release()
end
-- love.window.setMode
-- @NOTE same as getMode could be checking more flag properties
love.test.window.setMode = function(test)
love.window.setMode(512, 512, {
fullscreen = false,
resizable = false
})
local width, height, flags = love.window.getMode()
test:assertEquals(512, width, 'check window w match')
test:assertEquals(512, height, 'check window h match')
test:assertEquals(false, flags["fullscreen"], 'check window not fullscreen')
test:assertEquals(false, flags["resizable"], 'check window not resizeable')
love.window.setMode(256, 256, {
fullscreen = false,
resizable = true
})
end
-- love.window.setPosition
love.test.window.setPosition = 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.setTitle
love.test.window.setTitle = function(test)
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(false)
test:assertEquals(0, love.window.getVSync(), 'check vsync off')
love.window.setVSync(true)
test:assertEquals(1, love.window.getVSync(), 'check vsync on')
end
-- love.window.showMessageBox
-- @NOTE if running headless would need to skip anyway cos can't press it
-- skipping here cos it's annoying
love.test.window.showMessageBox = function(test)
test:skipTest('skipping cos annoying to test with')
end
-- love.window.toPixels
love.test.window.toPixels = function(test)
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)
love.window.setMode(512, 512, {
fullscreen = false,
resizable = false
})
love.window.updateMode(256, 256, nil)
local width, height, flags = love.window.getMode()
test:assertEquals(256, width, 'check window w match')
test:assertEquals(256, height, 'check window h match')
test:assertEquals(false, flags["fullscreen"], 'check window not fullscreen')
test:assertEquals(false, flags["resizable"], 'check window not resizeable')
love.window.setMode(256, 256, {
fullscreen = false,
resizable = true
})
end