mirror of
https://github.com/love2d/love.git
synced 2026-08-12 08:30:56 +02:00
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
This commit is contained in:
@@ -0,0 +1,336 @@
|
||||
-- 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
|
||||
Reference in New Issue
Block a user