Files
love/testing/tests/graphics.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

158 lines
4.8 KiB
Lua

-- love.graphics
-- DRAWING
-- love.graphics.rectangle
love.test.graphics.rectangle = function(test)
-- setup, draw a 16x16 red rectangle with a blue central square
local canvas = love.graphics.newCanvas(16, 16)
love.graphics.setCanvas(canvas)
love.graphics.clear(0, 0, 0, 1)
love.graphics.setColor(1, 0, 0, 1)
love.graphics.rectangle('fill', 0, 0, 16, 16)
love.graphics.setColor(0, 0, 1, 1)
love.graphics.rectangle('fill', 6, 6, 4, 4)
love.graphics.setColor(1, 1, 1, 1)
love.graphics.setCanvas()
local imgdata1 = love.graphics.readbackTexture(canvas, {16, 0, 0, 0, 16, 16})
-- test, check red bg and blue central square
local comparepixels = {
red = {{0,0},{15,0},{15,15},{0,15}},
blue = {{6,6},{9,6},{9,9},{6,9}}
}
test:assertPixels(imgdata1, comparepixels, 'fill')
-- clear canvas to do some line testing
love.graphics.setCanvas(canvas)
love.graphics.clear(0, 0, 0, 1)
love.graphics.setColor(1, 0, 0, 1)
love.graphics.rectangle('line', 1, 1, 15, 15) -- red border
love.graphics.setColor(0, 0, 1, 1)
love.graphics.rectangle('line', 1, 1, 2, 15) -- 3x16 left aligned blue outline
love.graphics.setColor(0, 1, 0, 1)
love.graphics.rectangle('line', 11, 1, 5, 15) -- 6x16 right aligned green outline
love.graphics.setCanvas()
local imgdata2 = love.graphics.readbackTexture(canvas, {1, 1, 0, 0, 16, 16})
-- -- check corners and inner corners
comparepixels = {
red = {{3,0},{9,0},{3,15,9,15}},
blue = {{0,0},{2,0},{0,15},{2,15}},
green = {{10,0},{15,0},{10,15},{15,15}},
black = {{1,1},{1,14},{3,1},{9,1},{3,14},{9,14},{11,1},{14,1},{11,14},{14,14}}
}
test:assertPixels(imgdata2, comparepixels, 'line')
-- -- write to save data for sanity checking
-- imgdata1:encode('png', 'love_test_graphics_rectangle_actual1.png')
-- imgdata2:encode('png', 'love_test_graphics_rectangle_actual2.png')
imgdata1:release()
imgdata2:release()
end
-- love.graphics.arc
-- love.graphics.circle
-- love.graphics.clear
-- love.graphics.discard
-- love.graphics.draw
-- love.graphics.drawInstanced
-- love.graphics.drawInstanced
-- love.graphics.drawLayer
-- love.graphics.ellipse
-- love.graphics.flushBatch
-- love.graphics.line
-- love.graphics.points
-- love.graphics.polygon
-- love.graphics.present
-- love.graphics.print
-- love.graphics.printf
-- love.graphics.rectangle
-- love.graphics.captureScreenshot
-- love.graphics.newArrayImage
-- love.graphics.newCanvas
-- love.graphics.newCubeImage
-- love.graphics.newFont
-- love.graphics.newImage
-- love.graphics.newImageFont
-- love.graphics.newMesh
-- love.graphics.newParticleSystem
-- love.graphics.newQuad
-- love.graphics.newShader
-- love.graphics.newSpriteBatch
-- love.graphics.newText
-- love.graphics.newVideo
-- love.graphics.newVolumeImage
-- love.graphics.setNewFont
-- love.graphics.validateShader
-- love.graphics.getBackgroundColor
-- love.graphics.getBlendMode
-- love.graphics.getCanvas
-- love.graphics.getColor
-- love.graphics.getColorMask
-- love.graphics.getDefaultFilter
-- love.graphics.getDepthMode
-- love.graphics.getFont
-- love.graphics.getFrontFaceWinding
-- love.graphics.getLineJoin
-- love.graphics.getLineStyle
-- love.graphics.getLineWidth
-- love.graphics.getMeshCullMode
-- love.graphics.getPointSize
-- love.graphics.getScissor
-- love.graphics.getShader
-- love.graphics.getStackDepth
-- love.graphics.getStencilTest
-- love.graphics.intersectScissor
-- love.graphics.isActive
-- love.graphics.isGammaCorrect
-- love.graphics.isSupported
-- love.graphics.isWireframe
-- love.graphics.reset
-- love.graphics.setBackgroundColor
-- love.graphics.setBlendMode
-- love.graphics.setCanvas
-- love.graphics.setColor
-- love.graphics.setColorMask
-- love.graphics.setDefaultFilter
-- love.graphics.setDepthMode
-- love.graphics.setFont
-- love.graphics.setFrontFaceWinding
-- love.graphics.setLineJoin
-- love.graphics.setLineStyle
-- love.graphics.setLineWidth
-- love.graphics.setMeshCullMode
-- love.graphics.setPointStyle
-- love.graphics.setScissor
-- love.graphics.setShader
-- love.graphics.setStencilTest
-- love.graphics.setWireframe
-- love.graphics.applyTransform
-- love.graphics.inverseTransformPoint
-- love.graphics.origin
-- love.graphics.pop
-- love.graphics.push
-- love.graphics.replaceTransform
-- love.graphics.rotate
-- love.graphics.scale
-- love.graphics.shear
-- love.graphics.transformPoint
-- love.graphics.translate
-- love.graphics.getDPIScale
-- love.graphics.getDimensions
-- love.graphics.getHeight
-- love.graphics.getPixelDimensions
-- love.graphics.getPixelHeight
-- love.graphics.getPixelWidth
-- love.graphics.getWidth
-- love.graphics.getCanvasformats
-- love.graphics.getImageFormats
-- love.graphics.getRendererInfo
-- love.graphics.getStats
-- love.graphics.getSupported
-- love.graphics.getSystemLimits
-- love.graphics.getTextureTypes