more graphics + some physics tests
- added obj tests for graphics.SpriteBatch, and graphics.Video - added obj tests for physics.World - added test for setStencilMode and removed deprecated stencil+setStencilTest - added graphics.drawInstanced - fixed deprecated physic shape calls (body now added as first param)
@@ -1,28 +1,28 @@
|
|||||||
<!-- PASSED 282 || FAILED 1 || SKIPPED 20 || TIME 9.881 -->
|
<!-- PASSED 285 || FAILED 1 || SKIPPED 15 || TIME 14.670 -->
|
||||||
|
|
||||||
### Info
|
### Info
|
||||||
**303** tests were completed in **9.881s** with **282** passed, **1** failed, and **20** skipped
|
**301** tests were completed in **14.670s** with **285** passed, **1** failed, and **15** skipped
|
||||||
|
|
||||||
Renderer: OpenGL | 4.1 Metal - 76.3 | Apple | Apple M1 Max
|
Renderer: OpenGL | 4.1 Metal - 76.3 | Apple | Apple M1 Max
|
||||||
|
|
||||||
### Report
|
### Report
|
||||||
| Module | Pass | Fail | Skip | Time |
|
| Module | Pass | Fail | Skip | Time |
|
||||||
| --------------------- | ------ | ------ | ------- | ------ |
|
| --------------------- | ------ | ------ | ------- | ------ |
|
||||||
| 🟢 audio | 28 | 0 | 0 | 0.857s |
|
| 🟢 audio | 28 | 0 | 0 | 0.890s |
|
||||||
| 🟢 data | 12 | 0 | 0 | 0.139s |
|
| 🟢 data | 12 | 0 | 0 | 0.205s |
|
||||||
| 🟢 event | 4 | 0 | 2 | 0.010s |
|
| 🟢 event | 4 | 0 | 2 | 0.102s |
|
||||||
| 🟢 filesystem | 29 | 0 | 2 | 0.068s |
|
| 🟢 filesystem | 29 | 0 | 2 | 0.530s |
|
||||||
| 🔴 font | 6 | 1 | 0 | 0.015s |
|
| 🔴 font | 6 | 1 | 0 | 0.121s |
|
||||||
| 🟢 graphics | 99 | 0 | 6 | 0.294s |
|
| 🟢 graphics | 102 | 0 | 3 | 3.232s |
|
||||||
| 🟢 image | 5 | 0 | 0 | 0.011s |
|
| 🟢 image | 5 | 0 | 0 | 0.086s |
|
||||||
| 🟢 math | 20 | 0 | 0 | 0.070s |
|
| 🟢 math | 20 | 0 | 0 | 0.339s |
|
||||||
| 🟢 physics | 22 | 0 | 6 | 0.071s |
|
| 🟢 physics | 22 | 0 | 4 | 0.434s |
|
||||||
| 🟢 sound | 4 | 0 | 0 | 0.015s |
|
| 🟢 sound | 4 | 0 | 0 | 0.071s |
|
||||||
| 🟢 system | 6 | 0 | 2 | 0.026s |
|
| 🟢 system | 6 | 0 | 2 | 0.139s |
|
||||||
| 🟢 thread | 5 | 0 | 0 | 0.317s |
|
| 🟢 thread | 5 | 0 | 0 | 0.376s |
|
||||||
| 🟢 timer | 6 | 0 | 0 | 2.021s |
|
| 🟢 timer | 6 | 0 | 0 | 2.091s |
|
||||||
| 🟢 video | 2 | 0 | 0 | 0.012s |
|
| 🟢 video | 2 | 0 | 0 | 0.039s |
|
||||||
| 🟢 window | 34 | 0 | 2 | 5.955s |
|
| 🟢 window | 34 | 0 | 2 | 6.015s |
|
||||||
|
|
||||||
### Failures
|
### Failures
|
||||||
> 🔴 GlyphData
|
> 🔴 GlyphData
|
||||||
|
|||||||
@@ -1,659 +1,650 @@
|
|||||||
<testsuites name="love.test" tests="282" failures="1" skipped="20" time="9.881">
|
<testsuites name="love.test" tests="285" failures="1" skipped="15" time="14.670">
|
||||||
<testsuite name="love.audio" tests="28" failures="0" skipped="0" time="0.857">
|
<testsuite name="love.audio" tests="28" failures="0" skipped="0" time="0.890">
|
||||||
<testcase classname="RecordingDevice" name="RecordingDevice" assertions="20" time="0.394">
|
<testcase classname="RecordingDevice" name="RecordingDevice" assertions="20" time="0.401">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Source" name="Source" assertions="54" time="0.019">
|
<testcase classname="Source" name="Source" assertions="54" time="0.022">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getActiveEffects" name="getActiveEffects" assertions="3" time="0.017">
|
<testcase classname="getActiveEffects" name="getActiveEffects" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getActiveSourceCount" name="getActiveSourceCount" assertions="3" time="0.018">
|
<testcase classname="getActiveSourceCount" name="getActiveSourceCount" assertions="3" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDistanceModel" name="getDistanceModel" assertions="3" time="0.017">
|
<testcase classname="getDistanceModel" name="getDistanceModel" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDopplerScale" name="getDopplerScale" assertions="2" time="0.017">
|
<testcase classname="getDopplerScale" name="getDopplerScale" assertions="2" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getEffect" name="getEffect" assertions="4" time="0.017">
|
<testcase classname="getEffect" name="getEffect" assertions="4" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getMaxSceneEffects" name="getMaxSceneEffects" assertions="1" time="0.017">
|
<testcase classname="getMaxSceneEffects" name="getMaxSceneEffects" assertions="1" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getMaxSourceEffects" name="getMaxSourceEffects" assertions="1" time="0.016">
|
<testcase classname="getMaxSourceEffects" name="getMaxSourceEffects" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getOrientation" name="getOrientation" assertions="6" time="0.016">
|
<testcase classname="getOrientation" name="getOrientation" assertions="6" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getPosition" name="getPosition" assertions="3" time="0.017">
|
<testcase classname="getPosition" name="getPosition" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getRecordingDevices" name="getRecordingDevices" assertions="1" time="0.017">
|
<testcase classname="getRecordingDevices" name="getRecordingDevices" assertions="1" time="0.020">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getVelocity" name="getVelocity" assertions="3" time="0.017">
|
<testcase classname="getVelocity" name="getVelocity" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getVolume" name="getVolume" assertions="1" time="0.018">
|
<testcase classname="getVolume" name="getVolume" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isEffectsSupported" name="isEffectsSupported" assertions="1" time="0.016">
|
<testcase classname="isEffectsSupported" name="isEffectsSupported" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newQueueableSource" name="newQueueableSource" assertions="3" time="0.017">
|
<testcase classname="newQueueableSource" name="newQueueableSource" assertions="3" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newSource" name="newSource" assertions="6" time="0.018">
|
<testcase classname="newSource" name="newSource" assertions="6" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="pause" name="pause" assertions="2" time="0.018">
|
<testcase classname="pause" name="pause" assertions="2" time="0.020">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="play" name="play" assertions="1" time="0.019">
|
<testcase classname="play" name="play" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setDistanceModel" name="setDistanceModel" assertions="7" time="0.017">
|
<testcase classname="setDistanceModel" name="setDistanceModel" assertions="7" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setDopplerScale" name="setDopplerScale" assertions="2" time="0.016">
|
<testcase classname="setDopplerScale" name="setDopplerScale" assertions="2" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setEffect" name="setEffect" assertions="3" time="0.017">
|
<testcase classname="setEffect" name="setEffect" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setMixWithSystem" name="setMixWithSystem" assertions="1" time="0.016">
|
<testcase classname="setMixWithSystem" name="setMixWithSystem" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setOrientation" name="setOrientation" assertions="6" time="0.017">
|
<testcase classname="setOrientation" name="setOrientation" assertions="6" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setPosition" name="setPosition" assertions="3" time="0.017">
|
<testcase classname="setPosition" name="setPosition" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setVelocity" name="setVelocity" assertions="3" time="0.017">
|
<testcase classname="setVelocity" name="setVelocity" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setVolume" name="setVolume" assertions="1" time="0.017">
|
<testcase classname="setVolume" name="setVolume" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="stop" name="stop" assertions="2" time="0.018">
|
<testcase classname="stop" name="stop" assertions="2" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.data" tests="12" failures="0" skipped="0" time="0.139">
|
<testsuite name="love.data" tests="12" failures="0" skipped="0" time="0.205">
|
||||||
<testcase classname="ByteData" name="ByteData" assertions="10" time="0.017">
|
<testcase classname="ByteData" name="ByteData" assertions="10" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="CompressedData" name="CompressedData" assertions="12" time="0.017">
|
<testcase classname="CompressedData" name="CompressedData" assertions="12" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="compress" name="compress" assertions="45" time="0.017">
|
<testcase classname="compress" name="compress" assertions="45" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="decode" name="decode" assertions="4" time="0.017">
|
<testcase classname="decode" name="decode" assertions="4" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="decompress" name="decompress" assertions="18" time="0.018">
|
<testcase classname="decompress" name="decompress" assertions="18" time="0.015">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="encode" name="encode" assertions="15" time="0.019">
|
<testcase classname="encode" name="encode" assertions="15" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getPackedSize" name="getPackedSize" assertions="3" time="0.011">
|
<testcase classname="getPackedSize" name="getPackedSize" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="hash" name="hash" assertions="6" time="0.016">
|
<testcase classname="hash" name="hash" assertions="6" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newByteData" name="newByteData" assertions="3" time="0.001">
|
<testcase classname="newByteData" name="newByteData" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newDataView" name="newDataView" assertions="3" time="0.002">
|
<testcase classname="newDataView" name="newDataView" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="pack" name="pack" assertions="4" time="0.001">
|
<testcase classname="pack" name="pack" assertions="4" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="unpack" name="unpack" assertions="3" time="0.002">
|
<testcase classname="unpack" name="unpack" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.event" tests="4" failures="0" skipped="2" time="0.010">
|
<testsuite name="love.event" tests="4" failures="0" skipped="2" time="0.102">
|
||||||
<testcase classname="clear" name="clear" assertions="1" time="0.002">
|
<testcase classname="clear" name="clear" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="poll" name="poll" assertions="1" time="0.001">
|
<testcase classname="poll" name="poll" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="pump" name="pump" assertions="0" time="0.002">
|
<testcase classname="pump" name="pump" assertions="0" time="0.016">
|
||||||
<skipped message="used internally" />
|
<skipped message="used internally" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="push" name="push" assertions="1" time="0.002">
|
<testcase classname="push" name="push" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="quit" name="quit" assertions="1" time="0.003">
|
<testcase classname="quit" name="quit" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="wait" name="wait" assertions="0" time="0.001">
|
<testcase classname="wait" name="wait" assertions="0" time="0.017">
|
||||||
<skipped message="used internally" />
|
<skipped message="used internally" />
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.filesystem" tests="29" failures="0" skipped="2" time="0.068">
|
<testsuite name="love.filesystem" tests="29" failures="0" skipped="2" time="0.530">
|
||||||
<testcase classname="File" name="File" assertions="36" time="0.002">
|
<testcase classname="File" name="File" assertions="36" time="0.020">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="FileData" name="FileData" assertions="12" time="0.003">
|
<testcase classname="FileData" name="FileData" assertions="12" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="append" name="append" assertions="6" time="0.002">
|
<testcase classname="append" name="append" assertions="6" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="areSymlinksEnabled" name="areSymlinksEnabled" assertions="1" time="0.001">
|
<testcase classname="areSymlinksEnabled" name="areSymlinksEnabled" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="createDirectory" name="createDirectory" assertions="3" time="0.002">
|
<testcase classname="createDirectory" name="createDirectory" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getAppdataDirectory" name="getAppdataDirectory" assertions="1" time="0.001">
|
<testcase classname="getAppdataDirectory" name="getAppdataDirectory" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getCRequirePath" name="getCRequirePath" assertions="1" time="0.001">
|
<testcase classname="getCRequirePath" name="getCRequirePath" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDirectoryItems" name="getDirectoryItems" assertions="2" time="0.002">
|
<testcase classname="getDirectoryItems" name="getDirectoryItems" assertions="2" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getIdentity" name="getIdentity" assertions="1" time="0.002">
|
<testcase classname="getIdentity" name="getIdentity" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getInfo" name="getInfo" assertions="3" time="0.007">
|
<testcase classname="getInfo" name="getInfo" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getRealDirectory" name="getRealDirectory" assertions="1" time="0.002">
|
<testcase classname="getRealDirectory" name="getRealDirectory" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getRequirePath" name="getRequirePath" assertions="1" time="0.001">
|
<testcase classname="getRequirePath" name="getRequirePath" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getSaveDirectory" name="getSaveDirectory" assertions="1" time="0.001">
|
<testcase classname="getSaveDirectory" name="getSaveDirectory" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getSource" name="getSource" assertions="0" time="0.002">
|
<testcase classname="getSource" name="getSource" assertions="0" time="0.018">
|
||||||
<skipped message="used internally" />
|
<skipped message="used internally" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getSourceBaseDirectory" name="getSourceBaseDirectory" assertions="1" time="0.002">
|
<testcase classname="getSourceBaseDirectory" name="getSourceBaseDirectory" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getUserDirectory" name="getUserDirectory" assertions="1" time="0.002">
|
<testcase classname="getUserDirectory" name="getUserDirectory" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getWorkingDirectory" name="getWorkingDirectory" assertions="1" time="0.007">
|
<testcase classname="getWorkingDirectory" name="getWorkingDirectory" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isFused" name="isFused" assertions="1" time="0.002">
|
<testcase classname="isFused" name="isFused" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="lines" name="lines" assertions="6" time="0.002">
|
<testcase classname="lines" name="lines" assertions="6" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="load" name="load" assertions="4" time="0.002">
|
<testcase classname="load" name="load" assertions="4" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="mount" name="mount" assertions="5" time="0.002">
|
<testcase classname="mount" name="mount" assertions="5" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newFileData" name="newFileData" assertions="1" time="0.002">
|
<testcase classname="newFileData" name="newFileData" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="openFile" name="openFile" assertions="4" time="0.002">
|
<testcase classname="openFile" name="openFile" assertions="4" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="read" name="read" assertions="6" time="0.002">
|
<testcase classname="read" name="read" assertions="6" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="remove" name="remove" assertions="5" time="0.002">
|
<testcase classname="remove" name="remove" assertions="5" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setCRequirePath" name="setCRequirePath" assertions="1" time="0.001">
|
<testcase classname="setCRequirePath" name="setCRequirePath" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setIdentity" name="setIdentity" assertions="1" time="0.001">
|
<testcase classname="setIdentity" name="setIdentity" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setRequirePath" name="setRequirePath" assertions="1" time="0.006">
|
<testcase classname="setRequirePath" name="setRequirePath" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setSource" name="setSource" assertions="0" time="0.001">
|
<testcase classname="setSource" name="setSource" assertions="0" time="0.016">
|
||||||
<skipped message="used internally" />
|
<skipped message="used internally" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="unmount" name="unmount" assertions="2" time="0.002">
|
<testcase classname="unmount" name="unmount" assertions="2" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="write" name="write" assertions="3" time="0.002">
|
<testcase classname="write" name="write" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.font" tests="6" failures="1" skipped="0" time="0.015">
|
<testsuite name="love.font" tests="6" failures="1" skipped="0" time="0.121">
|
||||||
<testcase classname="GlyphData" name="GlyphData" assertions="19" time="0.002">
|
<testcase classname="GlyphData" name="GlyphData" assertions="19" time="0.018">
|
||||||
<failure message="assert 8 [check glyph number] expected '97' got '0'">assert 8 [check glyph number] expected '97' got '0'</failure>
|
<failure message="assert 8 [check glyph number] expected '97' got '0'">assert 8 [check glyph number] expected '97' got '0'</failure>
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Rasterizer" name="Rasterizer" assertions="13" time="0.002">
|
<testcase classname="Rasterizer" name="Rasterizer" assertions="13" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newBMFontRasterizer" name="newBMFontRasterizer" assertions="3" time="0.002">
|
<testcase classname="newBMFontRasterizer" name="newBMFontRasterizer" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newGlyphData" name="newGlyphData" assertions="3" time="0.006">
|
<testcase classname="newGlyphData" name="newGlyphData" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newImageRasterizer" name="newImageRasterizer" assertions="3" time="0.002">
|
<testcase classname="newImageRasterizer" name="newImageRasterizer" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newRasterizer" name="newRasterizer" assertions="3" time="0.002">
|
<testcase classname="newRasterizer" name="newRasterizer" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newTrueTypeRasterizer" name="newTrueTypeRasterizer" assertions="6" time="0.002">
|
<testcase classname="newTrueTypeRasterizer" name="newTrueTypeRasterizer" assertions="6" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.graphics" tests="99" failures="0" skipped="6" time="0.294">
|
<testsuite name="love.graphics" tests="102" failures="0" skipped="3" time="3.232">
|
||||||
<testcase classname="Canvas" name="Canvas" assertions="44" time="0.003">
|
<testcase classname="Canvas" name="Canvas" assertions="44" time="0.020">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Font" name="Font" assertions="90" time="0.004">
|
<testcase classname="Font" name="Font" assertions="90" time="0.024">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Image" name="Image" assertions="40" time="0.006">
|
<testcase classname="Image" name="Image" assertions="40" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Mesh" name="Mesh" assertions="0" time="0.001">
|
<testcase classname="Mesh" name="Mesh" assertions="0" time="0.016">
|
||||||
<skipped message="test class needs writing" />
|
<skipped message="test class needs writing" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="ParticleSystem" name="ParticleSystem" assertions="0" time="0.001">
|
<testcase classname="ParticleSystem" name="ParticleSystem" assertions="0" time="0.017">
|
||||||
<skipped message="test class needs writing" />
|
<skipped message="test class needs writing" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Quad" name="Quad" assertions="47" time="0.003">
|
<testcase classname="Quad" name="Quad" assertions="47" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Shader" name="Shader" assertions="39" time="0.013">
|
<testcase classname="Shader" name="Shader" assertions="39" time="0.031">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="SpriteBatch" name="SpriteBatch" assertions="0" time="0.001">
|
<testcase classname="SpriteBatch" name="SpriteBatch" assertions="203" time="0.030">
|
||||||
<skipped message="test class needs writing" />
|
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Text" name="Text" assertions="90" time="0.003">
|
<testcase classname="Text" name="Text" assertions="90" time="0.024">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Video" name="Video" assertions="0" time="0.001">
|
<testcase classname="Video" name="Video" assertions="48" time="1.040">
|
||||||
<skipped message="test class needs writing" />
|
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="applyTransform" name="applyTransform" assertions="4" time="0.004">
|
<testcase classname="applyTransform" name="applyTransform" assertions="4" time="0.011">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="arc" name="arc" assertions="264" time="0.003">
|
<testcase classname="arc" name="arc" assertions="264" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="captureScreenshot" name="captureScreenshot" assertions="1" time="0.020">
|
<testcase classname="captureScreenshot" name="captureScreenshot" assertions="1" time="0.184">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="circle" name="circle" assertions="192" time="0.005">
|
<testcase classname="circle" name="circle" assertions="192" time="0.020">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="clear" name="clear" assertions="20" time="0.002">
|
<testcase classname="clear" name="clear" assertions="20" time="0.022">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="discard" name="discard" assertions="0" time="0.001">
|
<testcase classname="discard" name="discard" assertions="0" time="0.017">
|
||||||
<skipped message="cant test this worked" />
|
<skipped message="cant test this worked" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="draw" name="draw" assertions="112" time="0.002">
|
<testcase classname="draw" name="draw" assertions="112" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="drawInstanced" name="drawInstanced" assertions="0" time="0.002">
|
<testcase classname="drawInstanced" name="drawInstanced" assertions="16" time="0.030">
|
||||||
<skipped message="test class needs writing" />
|
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="drawLayer" name="drawLayer" assertions="144" time="0.003">
|
<testcase classname="drawLayer" name="drawLayer" assertions="144" time="0.021">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="ellipse" name="ellipse" assertions="80" time="0.002">
|
<testcase classname="ellipse" name="ellipse" assertions="80" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="flushBatch" name="flushBatch" assertions="1" time="0.004">
|
<testcase classname="flushBatch" name="flushBatch" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getBackgroundColor" name="getBackgroundColor" assertions="8" time="0.001">
|
<testcase classname="getBackgroundColor" name="getBackgroundColor" assertions="8" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getBlendMode" name="getBlendMode" assertions="4" time="0.001">
|
<testcase classname="getBlendMode" name="getBlendMode" assertions="4" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getCanvas" name="getCanvas" assertions="4" time="0.001">
|
<testcase classname="getCanvas" name="getCanvas" assertions="4" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getColor" name="getColor" assertions="8" time="0.001">
|
<testcase classname="getColor" name="getColor" assertions="8" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getColorMask" name="getColorMask" assertions="8" time="0.001">
|
<testcase classname="getColorMask" name="getColorMask" assertions="8" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDPIScale" name="getDPIScale" assertions="1" time="0.002">
|
<testcase classname="getDPIScale" name="getDPIScale" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDefaultFilter" name="getDefaultFilter" assertions="3" time="0.001">
|
<testcase classname="getDefaultFilter" name="getDefaultFilter" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDepthMode" name="getDepthMode" assertions="2" time="0.004">
|
<testcase classname="getDepthMode" name="getDepthMode" assertions="2" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDimensions" name="getDimensions" assertions="2" time="0.002">
|
<testcase classname="getDimensions" name="getDimensions" assertions="2" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getFont" name="getFont" assertions="3" time="0.001">
|
<testcase classname="getFont" name="getFont" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getFrontFaceWinding" name="getFrontFaceWinding" assertions="2" time="0.002">
|
<testcase classname="getFrontFaceWinding" name="getFrontFaceWinding" assertions="2" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getHeight" name="getHeight" assertions="1" time="0.001">
|
<testcase classname="getHeight" name="getHeight" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getLineJoin" name="getLineJoin" assertions="2" time="0.002">
|
<testcase classname="getLineJoin" name="getLineJoin" assertions="2" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getLineStyle" name="getLineStyle" assertions="2" time="0.002">
|
<testcase classname="getLineStyle" name="getLineStyle" assertions="2" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getLineWidth" name="getLineWidth" assertions="2" time="0.001">
|
<testcase classname="getLineWidth" name="getLineWidth" assertions="2" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getMeshCullMode" name="getMeshCullMode" assertions="2" time="0.001">
|
<testcase classname="getMeshCullMode" name="getMeshCullMode" assertions="2" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getPixelDimensions" name="getPixelDimensions" assertions="2" time="0.005">
|
<testcase classname="getPixelDimensions" name="getPixelDimensions" assertions="2" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getPixelHeight" name="getPixelHeight" assertions="1" time="0.001">
|
<testcase classname="getPixelHeight" name="getPixelHeight" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getPixelWidth" name="getPixelWidth" assertions="1" time="0.001">
|
<testcase classname="getPixelWidth" name="getPixelWidth" assertions="1" time="0.013">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getPointSize" name="getPointSize" assertions="2" time="0.001">
|
<testcase classname="getPointSize" name="getPointSize" assertions="2" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getRendererInfo" name="getRendererInfo" assertions="4" time="0.002">
|
<testcase classname="getRendererInfo" name="getRendererInfo" assertions="4" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getScissor" name="getScissor" assertions="8" time="0.002">
|
<testcase classname="getScissor" name="getScissor" assertions="8" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getShader" name="getShader" assertions="1" time="0.002">
|
<testcase classname="getShader" name="getShader" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getStackDepth" name="getStackDepth" assertions="4" time="0.002">
|
<testcase classname="getStackDepth" name="getStackDepth" assertions="4" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getStats" name="getStats" assertions="7" time="0.002">
|
<testcase classname="getStats" name="getStats" assertions="7" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getStencilMode" name="getStencilMode" assertions="6" time="0.001">
|
<testcase classname="getStencilMode" name="getStencilMode" assertions="6" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getSupported" name="getSupported" assertions="17" time="0.002">
|
<testcase classname="getSupported" name="getSupported" assertions="17" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getSystemLimits" name="getSystemLimits" assertions="13" time="0.005">
|
<testcase classname="getSystemLimits" name="getSystemLimits" assertions="13" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getTextureFormats" name="getTextureFormats" assertions="79" time="0.002">
|
<testcase classname="getTextureFormats" name="getTextureFormats" assertions="79" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getTextureTypes" name="getTextureTypes" assertions="4" time="0.001">
|
<testcase classname="getTextureTypes" name="getTextureTypes" assertions="4" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getWidth" name="getWidth" assertions="1" time="0.001">
|
<testcase classname="getWidth" name="getWidth" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="intersectScissor" name="intersectScissor" assertions="20" time="0.002">
|
<testcase classname="intersectScissor" name="intersectScissor" assertions="20" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="inverseTransformPoint" name="inverseTransformPoint" assertions="4" time="0.002">
|
<testcase classname="inverseTransformPoint" name="inverseTransformPoint" assertions="4" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isActive" name="isActive" assertions="1" time="0.001">
|
<testcase classname="isActive" name="isActive" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isGammaCorrect" name="isGammaCorrect" assertions="1" time="0.006">
|
<testcase classname="isGammaCorrect" name="isGammaCorrect" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isWireframe" name="isWireframe" assertions="2" time="0.001">
|
<testcase classname="isWireframe" name="isWireframe" assertions="2" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="line" name="line" assertions="64" time="0.003">
|
<testcase classname="line" name="line" assertions="64" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newArrayImage" name="newArrayImage" assertions="3" time="0.007">
|
<testcase classname="newArrayImage" name="newArrayImage" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newCanvas" name="newCanvas" assertions="6" time="0.002">
|
<testcase classname="newCanvas" name="newCanvas" assertions="6" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newCubeImage" name="newCubeImage" assertions="3" time="0.003">
|
<testcase classname="newCubeImage" name="newCubeImage" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newFont" name="newFont" assertions="6" time="0.002">
|
<testcase classname="newFont" name="newFont" assertions="6" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newImage" name="newImage" assertions="3" time="0.002">
|
<testcase classname="newImage" name="newImage" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newImageFont" name="newImageFont" assertions="3" time="0.002">
|
<testcase classname="newImageFont" name="newImageFont" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newMesh" name="newMesh" assertions="3" time="0.002">
|
<testcase classname="newMesh" name="newMesh" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newParticleSystem" name="newParticleSystem" assertions="3" time="0.002">
|
<testcase classname="newParticleSystem" name="newParticleSystem" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newQuad" name="newQuad" assertions="3" time="0.002">
|
<testcase classname="newQuad" name="newQuad" assertions="3" time="0.020">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newShader" name="newShader" assertions="3" time="0.009">
|
<testcase classname="newShader" name="newShader" assertions="3" time="0.024">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newSpriteBatch" name="newSpriteBatch" assertions="3" time="0.002">
|
<testcase classname="newSpriteBatch" name="newSpriteBatch" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newTextBatch" name="newTextBatch" assertions="3" time="0.002">
|
<testcase classname="newTextBatch" name="newTextBatch" assertions="3" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newVideo" name="newVideo" assertions="3" time="0.004">
|
<testcase classname="newVideo" name="newVideo" assertions="3" time="0.021">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newVolumeImage" name="newVolumeImage" assertions="3" time="0.002">
|
<testcase classname="newVolumeImage" name="newVolumeImage" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="origin" name="origin" assertions="4" time="0.002">
|
<testcase classname="origin" name="origin" assertions="4" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="points" name="points" assertions="48" time="0.003">
|
<testcase classname="points" name="points" assertions="48" time="0.022">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="polygon" name="polygon" assertions="56" time="0.002">
|
<testcase classname="polygon" name="polygon" assertions="56" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="pop" name="pop" assertions="4" time="0.002">
|
<testcase classname="pop" name="pop" assertions="4" time="0.032">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="print" name="print" assertions="148" time="0.002">
|
<testcase classname="print" name="print" assertions="148" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="printf" name="printf" assertions="180" time="0.002">
|
<testcase classname="printf" name="printf" assertions="180" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="push" name="push" assertions="4" time="0.007">
|
<testcase classname="push" name="push" assertions="4" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="rectangle" name="rectangle" assertions="116" time="0.002">
|
<testcase classname="rectangle" name="rectangle" assertions="116" time="0.032">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="replaceTransform" name="replaceTransform" assertions="4" time="0.002">
|
<testcase classname="replaceTransform" name="replaceTransform" assertions="4" time="0.024">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="reset" name="reset" assertions="3" time="0.002">
|
<testcase classname="reset" name="reset" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="rotate" name="rotate" assertions="16" time="0.002">
|
<testcase classname="rotate" name="rotate" assertions="16" time="0.036">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="scale" name="scale" assertions="16" time="0.002">
|
<testcase classname="scale" name="scale" assertions="16" time="0.014">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setBackgroundColor" name="setBackgroundColor" assertions="4" time="0.002">
|
<testcase classname="setBackgroundColor" name="setBackgroundColor" assertions="4" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setBlendMode" name="setBlendMode" assertions="16" time="0.003">
|
<testcase classname="setBlendMode" name="setBlendMode" assertions="16" time="0.027">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setCanvas" name="setCanvas" assertions="19" time="0.002">
|
<testcase classname="setCanvas" name="setCanvas" assertions="19" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setColor" name="setColor" assertions="68" time="0.002">
|
<testcase classname="setColor" name="setColor" assertions="68" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setColorMask" name="setColorMask" assertions="20" time="0.002">
|
<testcase classname="setColorMask" name="setColorMask" assertions="20" time="0.023">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setDefaultFilter" name="setDefaultFilter" assertions="3" time="0.001">
|
<testcase classname="setDefaultFilter" name="setDefaultFilter" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setDepthMode" name="setDepthMode" assertions="8" time="0.002">
|
<testcase classname="setDepthMode" name="setDepthMode" assertions="8" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setFont" name="setFont" assertions="40" time="0.003">
|
<testcase classname="setFont" name="setFont" assertions="40" time="0.030">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setFrontFaceWinding" name="setFrontFaceWinding" assertions="2" time="0.002">
|
<testcase classname="setFrontFaceWinding" name="setFrontFaceWinding" assertions="2" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setLineJoin" name="setLineJoin" assertions="16" time="0.003">
|
<testcase classname="setLineJoin" name="setLineJoin" assertions="16" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setLineStyle" name="setLineStyle" assertions="24" time="0.002">
|
<testcase classname="setLineStyle" name="setLineStyle" assertions="24" time="0.029">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setLineWidth" name="setLineWidth" assertions="72" time="0.002">
|
<testcase classname="setLineWidth" name="setLineWidth" assertions="72" time="0.021">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setMeshCullMode" name="setMeshCullMode" assertions="3" time="0.002">
|
<testcase classname="setMeshCullMode" name="setMeshCullMode" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setScissor" name="setScissor" assertions="32" time="0.002">
|
<testcase classname="setScissor" name="setScissor" assertions="32" time="0.034">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setShader" name="setShader" assertions="16" time="0.010">
|
<testcase classname="setShader" name="setShader" assertions="16" time="0.023">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setStencilTest" name="setStencilTest" assertions="32" time="0.003">
|
<testcase classname="setStencilMode" name="setStencilMode" assertions="32" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setWireframe" name="setWireframe" assertions="28" time="0.002">
|
<testcase classname="setWireframe" name="setWireframe" assertions="28" time="0.030">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="shear" name="shear" assertions="32" time="0.003">
|
<testcase classname="shear" name="shear" assertions="32" time="0.022">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="transformPoint" name="transformPoint" assertions="4" time="0.002">
|
<testcase classname="transformPoint" name="transformPoint" assertions="4" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="translate" name="translate" assertions="16" time="0.007">
|
<testcase classname="translate" name="translate" assertions="16" time="0.031">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="validateShader" name="validateShader" assertions="2" time="0.005">
|
<testcase classname="validateShader" name="validateShader" assertions="2" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.image" tests="5" failures="0" skipped="0" time="0.011">
|
<testsuite name="love.image" tests="5" failures="0" skipped="0" time="0.086">
|
||||||
<testcase classname="CompressedImageData" name="CompressedImageData" assertions="11" time="0.002">
|
<testcase classname="CompressedImageData" name="CompressedImageData" assertions="11" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="ImageData" name="ImageData" assertions="14" time="0.003">
|
<testcase classname="ImageData" name="ImageData" assertions="14" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isCompressed" name="isCompressed" assertions="1" time="0.002">
|
<testcase classname="isCompressed" name="isCompressed" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newCompressedData" name="newCompressedData" assertions="3" time="0.002">
|
<testcase classname="newCompressedData" name="newCompressedData" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newImageData" name="newImageData" assertions="6" time="0.002">
|
<testcase classname="newImageData" name="newImageData" assertions="6" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.math" tests="20" failures="0" skipped="0" time="0.070">
|
<testsuite name="love.math" tests="20" failures="0" skipped="0" time="0.339">
|
||||||
<testcase classname="BezierCurve" name="BezierCurve" assertions="31" time="0.007">
|
<testcase classname="BezierCurve" name="BezierCurve" assertions="31" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="RandomGenerator" name="RandomGenerator" assertions="10" time="0.002">
|
<testcase classname="RandomGenerator" name="RandomGenerator" assertions="10" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Transform" name="Transform" assertions="14" time="0.002">
|
<testcase classname="Transform" name="Transform" assertions="14" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="colorFromBytes" name="colorFromBytes" assertions="12" time="0.007">
|
<testcase classname="colorFromBytes" name="colorFromBytes" assertions="12" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="colorToBytes" name="colorToBytes" assertions="12" time="0.002">
|
<testcase classname="colorToBytes" name="colorToBytes" assertions="12" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="gammaToLinear" name="gammaToLinear" assertions="3" time="0.002">
|
<testcase classname="gammaToLinear" name="gammaToLinear" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getRandomSeed" name="getRandomSeed" assertions="2" time="0.006">
|
<testcase classname="getRandomSeed" name="getRandomSeed" assertions="2" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getRandomState" name="getRandomState" assertions="1" time="0.002">
|
<testcase classname="getRandomState" name="getRandomState" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isConvex" name="isConvex" assertions="2" time="0.002">
|
<testcase classname="isConvex" name="isConvex" assertions="2" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="linearToGamma" name="linearToGamma" assertions="3" time="0.007">
|
<testcase classname="linearToGamma" name="linearToGamma" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newBezierCurve" name="newBezierCurve" assertions="3" time="0.002">
|
<testcase classname="newBezierCurve" name="newBezierCurve" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newRandomGenerator" name="newRandomGenerator" assertions="3" time="0.002">
|
<testcase classname="newRandomGenerator" name="newRandomGenerator" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newTransform" name="newTransform" assertions="3" time="0.006">
|
<testcase classname="newTransform" name="newTransform" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="perlinNoise" name="perlinNoise" assertions="4" time="0.002">
|
<testcase classname="perlinNoise" name="perlinNoise" assertions="4" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="random" name="random" assertions="10" time="0.002">
|
<testcase classname="random" name="random" assertions="10" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="randomNormal" name="randomNormal" assertions="1" time="0.006">
|
<testcase classname="randomNormal" name="randomNormal" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setRandomSeed" name="setRandomSeed" assertions="2" time="0.002">
|
<testcase classname="setRandomSeed" name="setRandomSeed" assertions="2" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setRandomState" name="setRandomState" assertions="1" time="0.002">
|
<testcase classname="setRandomState" name="setRandomState" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="simplexNoise" name="simplexNoise" assertions="4" time="0.007">
|
<testcase classname="simplexNoise" name="simplexNoise" assertions="4" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="triangulate" name="triangulate" assertions="2" time="0.002">
|
<testcase classname="triangulate" name="triangulate" assertions="2" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.physics" tests="22" failures="0" skipped="6" time="0.071">
|
<testsuite name="love.physics" tests="22" failures="0" skipped="4" time="0.434">
|
||||||
<testcase classname="Body" name="Body" assertions="0" time="0.002">
|
<testcase classname="Body" name="Body" assertions="0" time="0.017">
|
||||||
<skipped message="test class needs writing" />
|
<skipped message="test class needs writing" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Contact" name="Contact" assertions="0" time="0.002">
|
<testcase classname="Contact" name="Contact" assertions="0" time="0.017">
|
||||||
<skipped message="test class needs writing" />
|
<skipped message="test class needs writing" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Fixture" name="Fixture" assertions="0" time="0.002">
|
<testcase classname="Joint" name="Joint" assertions="0" time="0.017">
|
||||||
<skipped message="test class needs writing" />
|
<skipped message="test class needs writing" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Joint" name="Joint" assertions="0" time="0.002">
|
<testcase classname="Shape" name="Shape" assertions="0" time="0.016">
|
||||||
<skipped message="test class needs writing" />
|
<skipped message="test class needs writing" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Shape" name="Shape" assertions="0" time="0.002">
|
<testcase classname="World" name="World" assertions="33" time="0.016">
|
||||||
<skipped message="test class needs writing" />
|
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="World" name="World" assertions="0" time="0.002">
|
<testcase classname="getDistance" name="getDistance" assertions="1" time="0.016">
|
||||||
<skipped message="test class needs writing" />
|
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDistance" name="getDistance" assertions="1" time="0.002">
|
<testcase classname="getMeter" name="getMeter" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getMeter" name="getMeter" assertions="1" time="0.002">
|
<testcase classname="newBody" name="newBody" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newBody" name="newBody" assertions="3" time="0.002">
|
<testcase classname="newChainShape" name="newChainShape" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newChainShape" name="newChainShape" assertions="3" time="0.008">
|
<testcase classname="newCircleShape" name="newCircleShape" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newCircleShape" name="newCircleShape" assertions="3" time="0.002">
|
<testcase classname="newDistanceJoint" name="newDistanceJoint" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newDistanceJoint" name="newDistanceJoint" assertions="3" time="0.002">
|
<testcase classname="newEdgeShape" name="newEdgeShape" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newEdgeShape" name="newEdgeShape" assertions="3" time="0.002">
|
<testcase classname="newFrictionJoint" name="newFrictionJoint" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newFixture" name="newFixture" assertions="3" time="0.002">
|
<testcase classname="newGearJoint" name="newGearJoint" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newFrictionJoint" name="newFrictionJoint" assertions="3" time="0.008">
|
<testcase classname="newMotorJoint" name="newMotorJoint" assertions="3" time="0.015">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newGearJoint" name="newGearJoint" assertions="3" time="0.002">
|
<testcase classname="newMouseJoint" name="newMouseJoint" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newMotorJoint" name="newMotorJoint" assertions="3" time="0.002">
|
<testcase classname="newPolygonShape" name="newPolygonShape" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newMouseJoint" name="newMouseJoint" assertions="3" time="0.002">
|
<testcase classname="newPrismaticJoint" name="newPrismaticJoint" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newPolygonShape" name="newPolygonShape" assertions="3" time="0.002">
|
<testcase classname="newPulleyJoint" name="newPulleyJoint" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newPrismaticJoint" name="newPrismaticJoint" assertions="3" time="0.005">
|
<testcase classname="newRectangleShape" name="newRectangleShape" assertions="6" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newPulleyJoint" name="newPulleyJoint" assertions="3" time="0.002">
|
<testcase classname="newRevoluteJoint" name="newRevoluteJoint" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newRectangleShape" name="newRectangleShape" assertions="6" time="0.002">
|
<testcase classname="newRopeJoint" name="newRopeJoint" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newRevoluteJoint" name="newRevoluteJoint" assertions="3" time="0.002">
|
<testcase classname="newWeldJoint" name="newWeldJoint" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newRopeJoint" name="newRopeJoint" assertions="3" time="0.002">
|
<testcase classname="newWheelJoint" name="newWheelJoint" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newWeldJoint" name="newWeldJoint" assertions="3" time="0.002">
|
<testcase classname="newWorld" name="newWorld" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newWheelJoint" name="newWheelJoint" assertions="3" time="0.002">
|
<testcase classname="setMeter" name="setMeter" assertions="2" time="0.016">
|
||||||
</testcase>
|
|
||||||
<testcase classname="newWorld" name="newWorld" assertions="3" time="0.002">
|
|
||||||
</testcase>
|
|
||||||
<testcase classname="setMeter" name="setMeter" assertions="2" time="0.002">
|
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.sound" tests="4" failures="0" skipped="0" time="0.015">
|
<testsuite name="love.sound" tests="4" failures="0" skipped="0" time="0.071">
|
||||||
<testcase classname="Decoder" name="Decoder" assertions="14" time="0.006">
|
<testcase classname="Decoder" name="Decoder" assertions="14" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="SoundData" name="SoundData" assertions="20" time="0.003">
|
<testcase classname="SoundData" name="SoundData" assertions="20" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newDecoder" name="newDecoder" assertions="3" time="0.002">
|
<testcase classname="newDecoder" name="newDecoder" assertions="3" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newSoundData" name="newSoundData" assertions="6" time="0.004">
|
<testcase classname="newSoundData" name="newSoundData" assertions="6" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.system" tests="6" failures="0" skipped="2" time="0.026">
|
<testsuite name="love.system" tests="6" failures="0" skipped="2" time="0.139">
|
||||||
<testcase classname="getClipboardText" name="getClipboardText" assertions="1" time="0.003">
|
<testcase classname="getClipboardText" name="getClipboardText" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getOS" name="getOS" assertions="1" time="0.002">
|
<testcase classname="getOS" name="getOS" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getPowerInfo" name="getPowerInfo" assertions="1" time="0.002">
|
<testcase classname="getPowerInfo" name="getPowerInfo" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getProcessorCount" name="getProcessorCount" assertions="1" time="0.002">
|
<testcase classname="getProcessorCount" name="getProcessorCount" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="hasBackgroundMusic" name="hasBackgroundMusic" assertions="1" time="0.005">
|
<testcase classname="hasBackgroundMusic" name="hasBackgroundMusic" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="openURL" name="openURL" assertions="0" time="0.002">
|
<testcase classname="openURL" name="openURL" assertions="0" time="0.016">
|
||||||
<skipped message="cant test this worked" />
|
<skipped message="cant test this worked" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setClipboardText" name="setClipboardText" assertions="1" time="0.002">
|
<testcase classname="setClipboardText" name="setClipboardText" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="vibrate" name="vibrate" assertions="0" time="0.007">
|
<testcase classname="vibrate" name="vibrate" assertions="0" time="0.017">
|
||||||
<skipped message="cant test this worked" />
|
<skipped message="cant test this worked" />
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.thread" tests="5" failures="0" skipped="0" time="0.317">
|
<testsuite name="love.thread" tests="5" failures="0" skipped="0" time="0.376">
|
||||||
<testcase classname="Channel" name="Channel" assertions="10" time="0.215">
|
<testcase classname="Channel" name="Channel" assertions="10" time="0.235">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="Thread" name="Thread" assertions="7" time="0.092">
|
<testcase classname="Thread" name="Thread" assertions="7" time="0.091">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getChannel" name="getChannel" assertions="3" time="0.002">
|
<testcase classname="getChannel" name="getChannel" assertions="3" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newChannel" name="newChannel" assertions="3" time="0.006">
|
<testcase classname="newChannel" name="newChannel" assertions="3" time="0.015">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newThread" name="newThread" assertions="3" time="0.002">
|
<testcase classname="newThread" name="newThread" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.timer" tests="6" failures="0" skipped="0" time="2.021">
|
<testsuite name="love.timer" tests="6" failures="0" skipped="0" time="2.091">
|
||||||
<testcase classname="getAverageDelta" name="getAverageDelta" assertions="1" time="0.002">
|
<testcase classname="getAverageDelta" name="getAverageDelta" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDelta" name="getDelta" assertions="1" time="0.006">
|
<testcase classname="getDelta" name="getDelta" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getFPS" name="getFPS" assertions="1" time="0.002">
|
<testcase classname="getFPS" name="getFPS" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getTime" name="getTime" assertions="1" time="1.003">
|
<testcase classname="getTime" name="getTime" assertions="1" time="1.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="sleep" name="sleep" assertions="1" time="1.003">
|
<testcase classname="sleep" name="sleep" assertions="1" time="1.012">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="step" name="step" assertions="1" time="0.005">
|
<testcase classname="step" name="step" assertions="1" time="0.012">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.video" tests="2" failures="0" skipped="0" time="0.012">
|
<testsuite name="love.video" tests="2" failures="0" skipped="0" time="0.039">
|
||||||
<testcase classname="VideoStream" name="VideoStream" assertions="9" time="0.007">
|
<testcase classname="VideoStream" name="VideoStream" assertions="9" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="newVideoStream" name="newVideoStream" assertions="3" time="0.005">
|
<testcase classname="newVideoStream" name="newVideoStream" assertions="3" time="0.020">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
<testsuite name="love.window" tests="34" failures="0" skipped="2" time="5.955">
|
<testsuite name="love.window" tests="34" failures="0" skipped="2" time="6.015">
|
||||||
<testcase classname="close" name="close" assertions="2" time="0.034">
|
<testcase classname="close" name="close" assertions="2" time="0.048">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="fromPixels" name="fromPixels" assertions="1" time="0.002">
|
<testcase classname="fromPixels" name="fromPixels" assertions="1" time="0.002">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDPIScale" name="getDPIScale" assertions="1" time="0.003">
|
<testcase classname="getDPIScale" name="getDPIScale" assertions="1" time="0.002">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDesktopDimensions" name="getDesktopDimensions" assertions="2" time="0.002">
|
<testcase classname="getDesktopDimensions" name="getDesktopDimensions" assertions="2" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDisplayCount" name="getDisplayCount" assertions="1" time="0.002">
|
<testcase classname="getDisplayCount" name="getDisplayCount" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDisplayName" name="getDisplayName" assertions="1" time="0.002">
|
<testcase classname="getDisplayName" name="getDisplayName" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getDisplayOrientation" name="getDisplayOrientation" assertions="1" time="0.004">
|
<testcase classname="getDisplayOrientation" name="getDisplayOrientation" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getFullscreen" name="getFullscreen" assertions="2" time="1.365">
|
<testcase classname="getFullscreen" name="getFullscreen" assertions="2" time="1.345">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getFullscreenModes" name="getFullscreenModes" assertions="1" time="0.014">
|
<testcase classname="getFullscreenModes" name="getFullscreenModes" assertions="1" time="0.012">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getIcon" name="getIcon" assertions="2" time="0.019">
|
<testcase classname="getIcon" name="getIcon" assertions="2" time="0.019">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getMode" name="getMode" assertions="3" time="0.017">
|
<testcase classname="getMode" name="getMode" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getPosition" name="getPosition" assertions="2" time="0.017">
|
<testcase classname="getPosition" name="getPosition" assertions="2" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getSafeArea" name="getSafeArea" assertions="4" time="0.018">
|
<testcase classname="getSafeArea" name="getSafeArea" assertions="4" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getTitle" name="getTitle" assertions="1" time="0.018">
|
<testcase classname="getTitle" name="getTitle" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="getVSync" name="getVSync" assertions="1" time="0.014">
|
<testcase classname="getVSync" name="getVSync" assertions="1" time="0.015">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="hasFocus" name="hasFocus" assertions="1" time="0.017">
|
<testcase classname="hasFocus" name="hasFocus" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="hasMouseFocus" name="hasMouseFocus" assertions="1" time="0.017">
|
<testcase classname="hasMouseFocus" name="hasMouseFocus" assertions="1" time="0.017">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isDisplaySleepEnabled" name="isDisplaySleepEnabled" assertions="3" time="0.017">
|
<testcase classname="isDisplaySleepEnabled" name="isDisplaySleepEnabled" assertions="3" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isMaximized" name="isMaximized" assertions="2" time="0.187">
|
<testcase classname="isMaximized" name="isMaximized" assertions="2" time="0.185">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isMinimized" name="isMinimized" assertions="2" time="0.735">
|
<testcase classname="isMinimized" name="isMinimized" assertions="2" time="0.730">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isOpen" name="isOpen" assertions="2" time="0.040">
|
<testcase classname="isOpen" name="isOpen" assertions="2" time="0.041">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="isVisible" name="isVisible" assertions="2" time="0.034">
|
<testcase classname="isVisible" name="isVisible" assertions="2" time="0.029">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="maximize" name="maximize" assertions="2" time="0.158">
|
<testcase classname="maximize" name="maximize" assertions="2" time="0.156">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="minimize" name="minimize" assertions="2" time="0.737">
|
<testcase classname="minimize" name="minimize" assertions="2" time="0.731">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="requestAttention" name="requestAttention" assertions="0" time="0.003">
|
<testcase classname="requestAttention" name="requestAttention" assertions="0" time="0.011">
|
||||||
<skipped message="cant test this worked" />
|
<skipped message="cant test this worked" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="restore" name="restore" assertions="1" time="0.882">
|
<testcase classname="restore" name="restore" assertions="1" time="0.883">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setDisplaySleepEnabled" name="setDisplaySleepEnabled" assertions="2" time="0.018">
|
<testcase classname="setDisplaySleepEnabled" name="setDisplaySleepEnabled" assertions="2" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setFullscreen" name="setFullscreen" assertions="2" time="1.313">
|
<testcase classname="setFullscreen" name="setFullscreen" assertions="2" time="1.339">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setIcon" name="setIcon" assertions="1" time="0.017">
|
<testcase classname="setIcon" name="setIcon" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setMode" name="setMode" assertions="4" time="0.022">
|
<testcase classname="setMode" name="setMode" assertions="4" time="0.022">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setPosition" name="setPosition" assertions="2" time="0.179">
|
<testcase classname="setPosition" name="setPosition" assertions="2" time="0.179">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setTitle" name="setTitle" assertions="1" time="0.021">
|
<testcase classname="setTitle" name="setTitle" assertions="1" time="0.018">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="setVSync" name="setVSync" assertions="1" time="0.017">
|
<testcase classname="setVSync" name="setVSync" assertions="1" time="0.016">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="showMessageBox" name="showMessageBox" assertions="0" time="0.003">
|
<testcase classname="showMessageBox" name="showMessageBox" assertions="0" time="0.002">
|
||||||
<skipped message="cant test this worked" />
|
<skipped message="cant test this worked" />
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="toPixels" name="toPixels" assertions="1" time="0.002">
|
<testcase classname="toPixels" name="toPixels" assertions="1" time="0.002">
|
||||||
</testcase>
|
</testcase>
|
||||||
<testcase classname="updateMode" name="updateMode" assertions="4" time="0.007">
|
<testcase classname="updateMode" name="updateMode" assertions="4" time="0.011">
|
||||||
</testcase>
|
</testcase>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
</testsuites>
|
</testsuites>
|
||||||
|
After Width: | Height: | Size: 96 B |
|
After Width: | Height: | Size: 111 B |
|
After Width: | Height: | Size: 112 B |
|
After Width: | Height: | Size: 72 B |
|
After Width: | Height: | Size: 209 B |
|
After Width: | Height: | Size: 197 B |
|
After Width: | Height: | Size: 369 B |
|
Before Width: | Height: | Size: 107 B After Width: | Height: | Size: 107 B |
@@ -26,10 +26,10 @@ This is the status of all module tests currently.
|
|||||||
| 🟢 event | 4 | 0 | 2 |
|
| 🟢 event | 4 | 0 | 2 |
|
||||||
| 🟢 filesystem | 29 | 0 | 2 |
|
| 🟢 filesystem | 29 | 0 | 2 |
|
||||||
| 🟢 font | 7 | 0 | 0 |
|
| 🟢 font | 7 | 0 | 0 |
|
||||||
| 🟡 graphics | 99 | 5 | 1 |
|
| 🟡 graphics | 102 | 2 | 1 |
|
||||||
| 🟢 image | 5 | 0 | 0 |
|
| 🟢 image | 5 | 0 | 0 |
|
||||||
| 🟢 math | 20 | 0 | 0 |
|
| 🟢 math | 20 | 0 | 0 |
|
||||||
| 🟡 physics | 22 | 6 | 0 |
|
| 🟡 physics | 22 | 4 | 0 |
|
||||||
| 🟢 sound | 4 | 0 | 0 |
|
| 🟢 sound | 4 | 0 | 0 |
|
||||||
| 🟢 system | 6 | 0 | 2 |
|
| 🟢 system | 6 | 0 | 2 |
|
||||||
| 🟢 thread | 5 | 0 | 0 |
|
| 🟢 thread | 5 | 0 | 0 |
|
||||||
@@ -60,7 +60,7 @@ All results will be printed in the console per method as PASS, FAIL, or SKIP wit
|
|||||||
|
|
||||||
When finished, the following files will be generated in the `/output` directory with a summary of the test results:
|
When finished, the following files will be generated in the `/output` directory with a summary of the test results:
|
||||||
- an `XML` file in the style of [JUnit XML](https://www.ibm.com/docs/en/developer-for-zos/14.1?topic=formats-junit-xml-format)
|
- an `XML` file in the style of [JUnit XML](https://www.ibm.com/docs/en/developer-for-zos/14.1?topic=formats-junit-xml-format)
|
||||||
- a `HTML` file that shows any visual test results
|
- a `HTML` file that shows the report + any visual test results
|
||||||
- a `Markdown` file you can use with [this github action](https://github.com/ellraiser/love-test-report)
|
- a `Markdown` file you can use with [this github action](https://github.com/ellraiser/love-test-report)
|
||||||
> An example of all types of output can be found in the `/examples`
|
> An example of all types of output can be found in the `/examples`
|
||||||
> The visual results of any graphic tests can be found in `/output/actual`
|
> The visual results of any graphic tests can be found in `/output/actual`
|
||||||
@@ -110,15 +110,13 @@ For sanity-checking, if it's currently not covered or it's not possible to test
|
|||||||
---
|
---
|
||||||
|
|
||||||
## Todo
|
## Todo
|
||||||
Things still left to do:
|
Test classes that still need to be written:
|
||||||
- [ ] physics.Body, physics.Contact, physics.Fixture,
|
- [ ] graphics.Mesh
|
||||||
physics.Joint, physics.Shape, physics.World
|
- [ ] graphics.ParticleSystem
|
||||||
- [ ] @deprecated physics methods (sasha changes)
|
- [ ] physics.Body
|
||||||
- [ ] graphics.Mesh, graphics.ParticleSystem
|
- [ ] physics.Contact
|
||||||
graphics.SpriteBatch, graphics.Video
|
- [ ] physics.Joint
|
||||||
- [ ] graphics.drawInstanced
|
- [ ] physics.Shape
|
||||||
- [ ] @deprecated love.graphics.stencil (replaced by love.graphics.setStencilMode)
|
|
||||||
- [ ] @deprecated love.graphics.setStencilTest (replaced by love.graphics.setStencilMode)
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -60,10 +60,11 @@ love.test.graphics.Canvas = function(test)
|
|||||||
test:assertEquals('linear', mode, 'check def minmap filter mode')
|
test:assertEquals('linear', mode, 'check def minmap filter mode')
|
||||||
test:assertEquals(0, sharpness, 'check def minmap filter sharpness')
|
test:assertEquals(0, sharpness, 'check def minmap filter sharpness')
|
||||||
local name, version, vendor, device = love.graphics.getRendererInfo()
|
local name, version, vendor, device = love.graphics.getRendererInfo()
|
||||||
if string.match(name, 'OpenGL ES') == nil and string.match(name, 'Metal') == nil then
|
|
||||||
canvas:setMipmapFilter('nearest', 1)
|
canvas:setMipmapFilter('nearest', 1)
|
||||||
mode, sharpness = canvas:getMipmapFilter()
|
mode, sharpness = canvas:getMipmapFilter()
|
||||||
test:assertEquals('nearest', mode, 'check changed minmap filter mode')
|
test:assertEquals('nearest', mode, 'check changed minmap filter mode')
|
||||||
|
-- mipmap sharpness wont work on opengl/metal
|
||||||
|
if string.match(name, 'OpenGL ES') == nil and string.match(name, 'Metal') == nil then
|
||||||
test:assertEquals(1, sharpness, 'check changed minmap filter sharpness')
|
test:assertEquals(1, sharpness, 'check changed minmap filter sharpness')
|
||||||
end
|
end
|
||||||
test:assertGreaterEqual(2, canvas:getMipmapCount()) -- docs say no mipmaps should return 1
|
test:assertGreaterEqual(2, canvas:getMipmapCount()) -- docs say no mipmaps should return 1
|
||||||
@@ -209,10 +210,11 @@ love.test.graphics.Image = function(test)
|
|||||||
test:assertEquals(0, sharpness, 'check def minmap filter sharpness')
|
test:assertEquals(0, sharpness, 'check def minmap filter sharpness')
|
||||||
|
|
||||||
local name, version, vendor, device = love.graphics.getRendererInfo()
|
local name, version, vendor, device = love.graphics.getRendererInfo()
|
||||||
if string.match(name, 'OpenGL ES') == nil and string.match(name, 'Metal') == nil then
|
-- mipmap sharpness wont work on opengl/metal
|
||||||
image:setMipmapFilter('nearest', 1)
|
image:setMipmapFilter('nearest', 1)
|
||||||
mode, sharpness = image:getMipmapFilter()
|
mode, sharpness = image:getMipmapFilter()
|
||||||
test:assertEquals('nearest', mode, 'check changed minmap filter mode')
|
test:assertEquals('nearest', mode, 'check changed minmap filter mode')
|
||||||
|
if string.match(name, 'OpenGL ES') == nil and string.match(name, 'Metal') == nil then
|
||||||
test:assertEquals(1, sharpness, 'check changed minmap filter sharpness')
|
test:assertEquals(1, sharpness, 'check changed minmap filter sharpness')
|
||||||
end
|
end
|
||||||
test:assertGreaterEqual(2, image:getMipmapCount()) -- docs say no mipmaps should return 1
|
test:assertGreaterEqual(2, image:getMipmapCount()) -- docs say no mipmaps should return 1
|
||||||
@@ -351,7 +353,133 @@ end
|
|||||||
|
|
||||||
-- SpriteBatch (love.graphics.newSpriteBatch)
|
-- SpriteBatch (love.graphics.newSpriteBatch)
|
||||||
love.test.graphics.SpriteBatch = function(test)
|
love.test.graphics.SpriteBatch = function(test)
|
||||||
test:skipTest('test class needs writing')
|
-- create batch
|
||||||
|
local texture1 = love.graphics.newImage('resources/cubemap.png')
|
||||||
|
local texture2 = love.graphics.newImage('resources/love.png')
|
||||||
|
local quad1 = love.graphics.newQuad(32, 12, 1, 1, texture2) -- lovepink
|
||||||
|
local quad2 = love.graphics.newQuad(32, 32, 1, 1, texture2) -- white
|
||||||
|
local sbatch = love.graphics.newSpriteBatch(texture1, 5000)
|
||||||
|
test:assertObject(sbatch)
|
||||||
|
-- check basic props
|
||||||
|
test:assertEquals(0, sbatch:getCount(), 'check batch size')
|
||||||
|
test:assertEquals(5000, sbatch:getBufferSize(), 'check batch size')
|
||||||
|
test:assertEquals(texture1:getWidth(), sbatch:getTexture():getWidth(), 'check texture match w')
|
||||||
|
test:assertEquals(texture1:getHeight(), sbatch:getTexture():getHeight(), 'check texture match h')
|
||||||
|
sbatch:setTexture(texture2)
|
||||||
|
test:assertEquals(texture2:getWidth(), sbatch:getTexture():getWidth(), 'check texture change w')
|
||||||
|
test:assertEquals(texture2:getHeight(), sbatch:getTexture():getHeight(), 'check texture change h')
|
||||||
|
local r, g, b, a = sbatch:getColor()
|
||||||
|
test:assertEquals(1, r, 'check initial color r')
|
||||||
|
test:assertEquals(1, g, 'check initial color g')
|
||||||
|
test:assertEquals(1, b, 'check initial color b')
|
||||||
|
test:assertEquals(1, a, 'check initial color a')
|
||||||
|
sbatch:setColor(1, 0, 0, 1)
|
||||||
|
r, g, b, a = sbatch:getColor()
|
||||||
|
test:assertEquals(1, r, 'check set color r')
|
||||||
|
test:assertEquals(0, g, 'check set color g')
|
||||||
|
test:assertEquals(0, b, 'check set color b')
|
||||||
|
test:assertEquals(1, a, 'check set color a')
|
||||||
|
-- check adding sprites
|
||||||
|
local offset_x = 0
|
||||||
|
local offset_y = 0
|
||||||
|
local color = 'white'
|
||||||
|
sbatch:setColor(1, 1, 1, 1)
|
||||||
|
local sprites = {}
|
||||||
|
for s=1,4096 do
|
||||||
|
local spr = sbatch:add(quad1, offset_x, offset_y, 0, 1, 1)
|
||||||
|
table.insert(sprites, {spr, offset_x, offset_y})
|
||||||
|
offset_x = offset_x + 1
|
||||||
|
if s % 64 == 0 then
|
||||||
|
-- alternate row colors
|
||||||
|
if color == 'white' then
|
||||||
|
color = 'red'
|
||||||
|
sbatch:setColor(1, 0, 0, 1)
|
||||||
|
else
|
||||||
|
color = 'white'
|
||||||
|
sbatch:setColor(1, 1, 1, 1)
|
||||||
|
end
|
||||||
|
offset_y = offset_y + 1
|
||||||
|
offset_x = 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
test:assertEquals(4096, sbatch:getCount())
|
||||||
|
-- test drawing and setting
|
||||||
|
local canvas = love.graphics.newCanvas(64, 64)
|
||||||
|
love.graphics.setCanvas(canvas)
|
||||||
|
love.graphics.clear(0, 0, 0, 1)
|
||||||
|
love.graphics.draw(sbatch, 0, 0)
|
||||||
|
love.graphics.setCanvas()
|
||||||
|
local imgdata1 = love.graphics.readbackTexture(canvas, {64, 0, 0, 0, 64, 64})
|
||||||
|
test:assertPixels(imgdata1, {
|
||||||
|
lovepink = {{0,0},{63,2},{0,32},{63,32},{63,0},{63,2}}
|
||||||
|
}, 'sbatch draw normal')
|
||||||
|
test:exportImg(imgdata1)
|
||||||
|
-- use set to change some sprites
|
||||||
|
for s=1,2048 do
|
||||||
|
sbatch:set(sprites[s][1], quad2, sprites[s][2], sprites[s][3]+1, 0, 1, 1)
|
||||||
|
end
|
||||||
|
love.graphics.setCanvas(canvas)
|
||||||
|
love.graphics.clear(0, 0, 0, 1)
|
||||||
|
love.graphics.draw(sbatch, 0, 0)
|
||||||
|
love.graphics.setCanvas()
|
||||||
|
local imgdata2 = love.graphics.readbackTexture(canvas, {64, 0, 0, 0, 64, 64})
|
||||||
|
test:assertPixels(imgdata2, {
|
||||||
|
lovepink = {{0,32},{63,32}},
|
||||||
|
black = {{0,0},{63,0}},
|
||||||
|
white = {{0,1},{63,1},{0,31},{63,31}}
|
||||||
|
}, 'sbatch draw set')
|
||||||
|
test:exportImg(imgdata2)
|
||||||
|
-- set drawRange and redraw
|
||||||
|
sbatch:setDrawRange(1025, 2048)
|
||||||
|
love.graphics.setCanvas(canvas)
|
||||||
|
love.graphics.clear(0, 0, 0, 1)
|
||||||
|
love.graphics.draw(sbatch, 0, 0)
|
||||||
|
love.graphics.setCanvas()
|
||||||
|
local imgdata3 = love.graphics.readbackTexture(canvas, {64, 0, 0, 0, 64, 64})
|
||||||
|
test:assertPixels(imgdata3, {
|
||||||
|
lovepink = {{0,32},{63,32}},
|
||||||
|
black = {{0,0},{63,0},{0,48},{63,48}},
|
||||||
|
white = {{0,17},{63,17},{0,31},{63,31}}
|
||||||
|
}, 'sbatch draw drawrange')
|
||||||
|
test:exportImg(imgdata3)
|
||||||
|
-- clear and redraw
|
||||||
|
sbatch:clear()
|
||||||
|
love.graphics.setCanvas(canvas)
|
||||||
|
love.graphics.clear(0, 0, 0, 1)
|
||||||
|
love.graphics.draw(sbatch, 0, 0)
|
||||||
|
love.graphics.setCanvas()
|
||||||
|
local imgdata4 = love.graphics.readbackTexture(canvas, {64, 0, 0, 0, 64, 64})
|
||||||
|
test:assertPixels(imgdata4, {
|
||||||
|
black = {{0,0},{63,0},{0,32},{63,32},{0,63},{63,63}},
|
||||||
|
}, 'sbatch draw clear')
|
||||||
|
test:exportImg(imgdata4)
|
||||||
|
-- array texture sbatch
|
||||||
|
local texture3 = love.graphics.newArrayImage({
|
||||||
|
'resources/love.png',
|
||||||
|
'resources/loveinv.png'
|
||||||
|
})
|
||||||
|
local asbatch = love.graphics.newSpriteBatch(texture3, 4096)
|
||||||
|
local quad3 = love.graphics.newQuad(32, 52, 1, 1, texture3) -- loveblue
|
||||||
|
sprites = {}
|
||||||
|
for s=1,4096 do
|
||||||
|
local spr = asbatch:addLayer(1, quad3, 0, s, math.floor(s/64), 1, 1)
|
||||||
|
table.insert(sprites, {spr, s, math.floor(s/64)})
|
||||||
|
end
|
||||||
|
test:assertEquals(4096, asbatch:getCount(), 'check max batch size applies')
|
||||||
|
for s=1,2048 do
|
||||||
|
asbatch:setLayer(sprites[s][1], 2, sprites[s][2], sprites[s][3], 0, 1, 1)
|
||||||
|
end
|
||||||
|
love.graphics.setCanvas(canvas)
|
||||||
|
love.graphics.clear(0, 0, 0, 1)
|
||||||
|
love.graphics.draw(asbatch, 0, 0)
|
||||||
|
love.graphics.setCanvas()
|
||||||
|
local imgdata5 = love.graphics.readbackTexture(canvas, {64, 0, 0, 0, 64, 64})
|
||||||
|
test:assertPixels(imgdata5, {
|
||||||
|
loveblue = {{31,2},{63,2},{3,30},{3,33},{16,47},{63,47}},
|
||||||
|
lovepink = {{17,48},{63,48},{31,61},{63,61}},
|
||||||
|
black = {{0,0},{63,0},{63,63},{63,0},{30,2},{30,61}},
|
||||||
|
}, 'sbatch draw layers')
|
||||||
|
test:exportImg(imgdata5)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -396,7 +524,54 @@ end
|
|||||||
|
|
||||||
-- Video (love.graphics.newVideo)
|
-- Video (love.graphics.newVideo)
|
||||||
love.test.graphics.Video = function(test)
|
love.test.graphics.Video = function(test)
|
||||||
test:skipTest('test class needs writing')
|
-- create video
|
||||||
|
local video = love.graphics.newVideo('resources/sample.ogv')
|
||||||
|
test:assertObject(video)
|
||||||
|
-- check basic props
|
||||||
|
local w, h = video:getDimensions()
|
||||||
|
test:assertEquals(496, w, 'check vid dim w')
|
||||||
|
test:assertEquals(502, h, 'check vid dim h')
|
||||||
|
test:assertEquals(w, video:getWidth(), 'check vid width match')
|
||||||
|
test:assertEquals(h, video:getHeight(), 'check vid height match')
|
||||||
|
local min, mag, ani = video:getFilter()
|
||||||
|
test:assertEquals('nearest', min, 'check def filter min')
|
||||||
|
test:assertEquals('nearest', mag, 'check def filter mag')
|
||||||
|
test:assertEquals(1, ani, 'check def filter ani')
|
||||||
|
video:setFilter('linear', 'linear', 2)
|
||||||
|
min, mag, ani = video:getFilter()
|
||||||
|
test:assertEquals('linear', min, 'check changed filter min')
|
||||||
|
test:assertEquals('linear', mag, 'check changed filter mag')
|
||||||
|
test:assertEquals(2, ani, 'check changed filter ani')
|
||||||
|
test:assertEquals(false, video:isPlaying(), 'check paused by default')
|
||||||
|
test:assertEquals(0, video:tell(), 'check 0:00 by default')
|
||||||
|
-- covered by their own obj tests in video but check returns obj
|
||||||
|
local source = video:getSource()
|
||||||
|
test:assertObject(source)
|
||||||
|
local stream = video:getStream()
|
||||||
|
test:assertObject(stream)
|
||||||
|
-- check playing / pausing / seeking
|
||||||
|
video:play()
|
||||||
|
test:waitFrames(60)
|
||||||
|
video:pause()
|
||||||
|
test:assertEquals(1, math.ceil(video:tell()), 'check video playing for 1s')
|
||||||
|
video:seek(0.2)
|
||||||
|
test:assertEquals(0.2, video:tell(), 'check video seeking')
|
||||||
|
video:rewind()
|
||||||
|
test:assertEquals(0, video:tell(), 'check video rewind')
|
||||||
|
video:setFilter('nearest', 'nearest', 1)
|
||||||
|
video:play()
|
||||||
|
-- check actuall drawing with the vid
|
||||||
|
local canvas = love.graphics.newCanvas(500, 500)
|
||||||
|
love.graphics.setCanvas(canvas)
|
||||||
|
love.graphics.clear(1, 0, 0, 1)
|
||||||
|
love.graphics.draw(video, 0, 0)
|
||||||
|
love.graphics.setCanvas()
|
||||||
|
local imgdata = love.graphics.readbackTexture(canvas, {500, 0, 0, 0, 500, 500})
|
||||||
|
test:assertPixels(imgdata, {
|
||||||
|
black = {{0,0},{495,0},{495,499},{0,499}},
|
||||||
|
red = {{499,0},{499,499}}
|
||||||
|
}, 'video draw')
|
||||||
|
test:exportImg(imgdata)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -560,7 +735,27 @@ end
|
|||||||
|
|
||||||
-- love.graphics.drawInstanced
|
-- love.graphics.drawInstanced
|
||||||
love.test.graphics.drawInstanced = function(test)
|
love.test.graphics.drawInstanced = function(test)
|
||||||
test:skipTest('test class needs writing')
|
local image = love.graphics.newImage('resources/love.png')
|
||||||
|
local vertices = {
|
||||||
|
{ 0, 0, 0, 0, 1, 0, 0 },
|
||||||
|
{ image:getWidth(), 0, 1, 0, 0, 1, 0 },
|
||||||
|
{ image:getWidth(), image:getHeight(), 1, 1, 0, 0, 1 },
|
||||||
|
{ 0, image:getHeight(), 0, 1, 1, 1, 0 },
|
||||||
|
}
|
||||||
|
local mesh = love.graphics.newMesh(vertices, 'fan')
|
||||||
|
local canvas = love.graphics.newCanvas(64, 64)
|
||||||
|
love.graphics.setCanvas(canvas)
|
||||||
|
love.graphics.clear(0, 0, 0, 1)
|
||||||
|
love.graphics.drawInstanced(mesh, 1000, 0, 0, 0, 1, 1)
|
||||||
|
love.graphics.setCanvas()
|
||||||
|
local imgdata = love.graphics.readbackTexture(canvas, {64, 0, 0, 0, 64, 64})
|
||||||
|
test:assertPixels(imgdata, {
|
||||||
|
red = {{0,0}},
|
||||||
|
green = {{63,0}},
|
||||||
|
blue = {{63,63}},
|
||||||
|
yellow = {{0,63}}
|
||||||
|
}, 'draw instances')
|
||||||
|
test:exportImg(imgdata)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -1648,19 +1843,18 @@ love.test.graphics.setShader = function(test)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- love.graphics.setStencilTest
|
-- love.graphics.setStencilMode
|
||||||
love.test.graphics.setStencilTest = function(test)
|
love.test.graphics.setStencilMode = function(test)
|
||||||
local canvas = love.graphics.newCanvas(16, 16)
|
local canvas = love.graphics.newCanvas(16, 16)
|
||||||
love.graphics.setCanvas({canvas, stencil=true})
|
love.graphics.setCanvas({canvas, stencil=true})
|
||||||
love.graphics.clear(0, 0, 0, 1)
|
love.graphics.clear(0, 0, 0, 1)
|
||||||
love.graphics.stencil(function()
|
love.graphics.setStencilMode('replace', 'always', 1)
|
||||||
love.graphics.circle('fill', 8, 8, 6)
|
love.graphics.circle('fill', 8, 8, 6)
|
||||||
end, 'replace', 1)
|
love.graphics.setStencilMode('keep', 'greater', 0)
|
||||||
love.graphics.setStencilTest('greater', 0)
|
|
||||||
love.graphics.setColor(1, 0, 0, 1)
|
love.graphics.setColor(1, 0, 0, 1)
|
||||||
love.graphics.rectangle('fill', 0, 0, 16, 16)
|
love.graphics.rectangle('fill', 0, 0, 16, 16)
|
||||||
love.graphics.setColor(1, 1, 1, 1)
|
love.graphics.setColor(1, 1, 1, 1)
|
||||||
love.graphics.setStencilTest()
|
love.graphics.setStencilMode()
|
||||||
love.graphics.setCanvas()
|
love.graphics.setCanvas()
|
||||||
local imgdata = love.graphics.readbackTexture(canvas, {16, 0, 0, 0, 16, 16})
|
local imgdata = love.graphics.readbackTexture(canvas, {16, 0, 0, 0, 16, 16})
|
||||||
test:assertPixels(imgdata, {
|
test:assertPixels(imgdata, {
|
||||||
|
|||||||
@@ -20,12 +20,6 @@ love.test.physics.Contact = function(test)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- Fixture (love.physics.newFixture)
|
|
||||||
love.test.physics.Fixture = function(test)
|
|
||||||
test:skipTest('test class needs writing')
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
-- Joint (love.physics.newDistanceJoint)
|
-- Joint (love.physics.newDistanceJoint)
|
||||||
love.test.physics.Joint = function(test)
|
love.test.physics.Joint = function(test)
|
||||||
test:skipTest('test class needs writing')
|
test:skipTest('test class needs writing')
|
||||||
@@ -33,6 +27,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
-- Shape (love.physics.newCircleShape)
|
-- Shape (love.physics.newCircleShape)
|
||||||
|
-- @NOTE includes Fixture methods too enjoy
|
||||||
love.test.physics.Shape = function(test)
|
love.test.physics.Shape = function(test)
|
||||||
test:skipTest('test class needs writing')
|
test:skipTest('test class needs writing')
|
||||||
end
|
end
|
||||||
@@ -40,7 +35,81 @@ end
|
|||||||
|
|
||||||
-- World (love.physics.newWorld)
|
-- World (love.physics.newWorld)
|
||||||
love.test.physics.World = function(test)
|
love.test.physics.World = function(test)
|
||||||
test:skipTest('test class needs writing')
|
-- create new world
|
||||||
|
local world = love.physics.newWorld(0, 0, false)
|
||||||
|
local body1 = love.physics.newBody(world, 0, 0, 'dynamic')
|
||||||
|
local rectangle1 = love.physics.newRectangleShape(body1, 0, 0, 10, 10)
|
||||||
|
test:assertObject(world)
|
||||||
|
-- check defaults
|
||||||
|
test:assertEquals(1, #world:getBodies(), 'check 1 body')
|
||||||
|
test:assertEquals(0, world:getBodies()[1]:getX(), 'check body prop x')
|
||||||
|
test:assertEquals(0, world:getBodies()[1]:getY(), 'check body prop y')
|
||||||
|
world:translateOrigin(-10, -10)
|
||||||
|
test:assertEquals(10, world:getBodies()[1]:getX(), 'check body prop change x')
|
||||||
|
test:assertEquals(10, world:getBodies()[1]:getY(), 'check body prop change y')
|
||||||
|
test:assertEquals(1, world:getBodyCount(), 'check 1 body count')
|
||||||
|
test:assertEquals(false, world:isDestroyed(), 'check not destroyed')
|
||||||
|
test:assertEquals(false, world:isLocked(), 'check not updating')
|
||||||
|
test:assertEquals(0, #world:getJoints(), 'check no joints')
|
||||||
|
test:assertEquals(0, world:getJointCount(), 'check no joints count')
|
||||||
|
test:assertEquals(0, world:getGravity(), 'check def gravity')
|
||||||
|
test:assertEquals(0, #world:getContacts(), 'check no contacts')
|
||||||
|
test:assertEquals(0, world:getContactCount(), 'check no contact count')
|
||||||
|
test:assertEquals(false, world:isSleepingAllowed(), 'check no sleep (till brooklyn)')
|
||||||
|
world:setSleepingAllowed(true)
|
||||||
|
test:assertEquals(true, world:isSleepingAllowed(), 'check can sleep')
|
||||||
|
-- check callbacks are called
|
||||||
|
local beginContact, endContact, preSolve, postSolve = world:getCallbacks()
|
||||||
|
test:assertEquals(nil, beginContact, 'check no begin contact callback')
|
||||||
|
test:assertEquals(nil, endContact, 'check no end contact callback')
|
||||||
|
test:assertEquals(nil, preSolve, 'check no pre solve callback')
|
||||||
|
test:assertEquals(nil, postSolve, 'check no post solve callback')
|
||||||
|
local beginContactCheck = false
|
||||||
|
local endContactCheck = false
|
||||||
|
local preSolveCheck = false
|
||||||
|
local postSolveCheck = false
|
||||||
|
local collisions = 0
|
||||||
|
world:setCallbacks(
|
||||||
|
function() beginContactCheck = true; collisions = collisions + 1 end,
|
||||||
|
function() endContactCheck = true end,
|
||||||
|
function() preSolveCheck = true end,
|
||||||
|
function() postSolveCheck = true end
|
||||||
|
)
|
||||||
|
local body2 = love.physics.newBody(world, 10, 10, 'dynamic')
|
||||||
|
local rectangle2 = love.physics.newRectangleShape(body2, 0, 0, 10, 10)
|
||||||
|
test:assertEquals(false, beginContactCheck, 'check world didnt update after adding body')
|
||||||
|
world:update(1)
|
||||||
|
test:assertEquals(true, beginContactCheck, 'check contact start')
|
||||||
|
test:assertEquals(true, preSolveCheck, 'check pre solve')
|
||||||
|
test:assertEquals(true, postSolveCheck, 'check post solve')
|
||||||
|
body2:setPosition(100, 100)
|
||||||
|
world:update(1)
|
||||||
|
test:assertEquals(true, endContactCheck, 'check contact end')
|
||||||
|
-- check point checking
|
||||||
|
local shapes = 0
|
||||||
|
world:queryShapesInArea(0, 0, 10, 10, function(x)
|
||||||
|
shapes = shapes + 1
|
||||||
|
end)
|
||||||
|
test:assertEquals(1, shapes, 'check shapes in area')
|
||||||
|
world:rayCast(0, 0, 200, 200, function(x)
|
||||||
|
shapes = shapes + 1
|
||||||
|
return 1
|
||||||
|
end)
|
||||||
|
test:assertEquals(3, shapes, 'check shapes in raycast')
|
||||||
|
-- change collision logic
|
||||||
|
test:assertEquals(nil, world:getContactFilter(), 'check def filter')
|
||||||
|
world:update(1)
|
||||||
|
world:setContactFilter(function(s1, s2)
|
||||||
|
return false -- nothing collides
|
||||||
|
end)
|
||||||
|
body2:setPosition(10, 10)
|
||||||
|
world:update(1)
|
||||||
|
test:assertEquals(1, collisions, 'check collision logic change')
|
||||||
|
-- final bits
|
||||||
|
world:setGravity(1, 1)
|
||||||
|
test:assertEquals(1, world:getGravity(), 'check grav change')
|
||||||
|
world:destroy()
|
||||||
|
test:assertEquals(true, world:isDestroyed(), 'check world destroyed')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -54,14 +123,12 @@ end
|
|||||||
-- love.physics.getDistance
|
-- love.physics.getDistance
|
||||||
love.test.physics.getDistance = function(test)
|
love.test.physics.getDistance = function(test)
|
||||||
-- setup two fixtues to check
|
-- setup two fixtues to check
|
||||||
local shape1 = love.physics.newEdgeShape(0, 0, 5, 5)
|
|
||||||
local shape2 = love.physics.newEdgeShape(10, 10, 15, 15)
|
|
||||||
local world = love.physics.newWorld(0, 0, false)
|
local world = love.physics.newWorld(0, 0, false)
|
||||||
local body = love.physics.newBody(world, 10, 10, 'static')
|
local body = love.physics.newBody(world, 10, 10, 'static')
|
||||||
local fixture1 = love.physics.newFixture(body, shape1, 1)
|
local shape1 = love.physics.newEdgeShape(body, 0, 0, 5, 5)
|
||||||
local fixture2 = love.physics.newFixture(body, shape2, 1)
|
local shape2 = love.physics.newEdgeShape(body, 10, 10, 15, 15)
|
||||||
-- check distance between them
|
-- check distance between them
|
||||||
test:assertEquals(647106, math.floor(love.physics.getDistance(fixture1, fixture2)*100000), 'check distance matches')
|
test:assertEquals(647106, math.floor(love.physics.getDistance(shape1, shape2)*100000), 'check distance matches')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -85,14 +152,18 @@ end
|
|||||||
-- love.physics.newChainShape
|
-- love.physics.newChainShape
|
||||||
-- @NOTE this is just basic nil checking, objs have their own test method
|
-- @NOTE this is just basic nil checking, objs have their own test method
|
||||||
love.test.physics.newChainShape = function(test)
|
love.test.physics.newChainShape = function(test)
|
||||||
test:assertObject(love.physics.newChainShape(true, 0, 0, 1, 0, 1, 1, 0, 1))
|
local world = love.physics.newWorld(1, 1, true)
|
||||||
|
local body = love.physics.newBody(world, 10, 10, 'static')
|
||||||
|
test:assertObject(love.physics.newChainShape(body, true, 0, 0, 1, 0, 1, 1, 0, 1))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- love.physics.newCircleShape
|
-- love.physics.newCircleShape
|
||||||
-- @NOTE this is just basic nil checking, objs have their own test method
|
-- @NOTE this is just basic nil checking, objs have their own test method
|
||||||
love.test.physics.newCircleShape = function(test)
|
love.test.physics.newCircleShape = function(test)
|
||||||
test:assertObject(love.physics.newCircleShape(10))
|
local world = love.physics.newWorld(1, 1, true)
|
||||||
|
local body = love.physics.newBody(world, 10, 10, 'static')
|
||||||
|
test:assertObject(love.physics.newCircleShape(body, 10))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -110,18 +181,9 @@ end
|
|||||||
-- love.physics.newEdgeShape
|
-- love.physics.newEdgeShape
|
||||||
-- @NOTE this is just basic nil checking, objs have their own test method
|
-- @NOTE this is just basic nil checking, objs have their own test method
|
||||||
love.test.physics.newEdgeShape = function(test)
|
love.test.physics.newEdgeShape = function(test)
|
||||||
local obj = love.physics.newEdgeShape(0, 0, 10, 10)
|
|
||||||
test:assertObject(obj)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
-- love.physics.newFixture
|
|
||||||
-- @NOTE this is just basic nil checking, objs have their own test method
|
|
||||||
love.test.physics.newFixture = function(test)
|
|
||||||
local world = love.physics.newWorld(1, 1, true)
|
local world = love.physics.newWorld(1, 1, true)
|
||||||
local body = love.physics.newBody(world, 10, 10, 'static')
|
local body = love.physics.newBody(world, 10, 10, 'static')
|
||||||
local shape = love.physics.newCircleShape(10)
|
local obj = love.physics.newEdgeShape(body, 0, 0, 10, 10)
|
||||||
local obj = love.physics.newFixture(body, shape, 1)
|
|
||||||
test:assertObject(obj)
|
test:assertObject(obj)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -176,7 +238,9 @@ end
|
|||||||
-- love.physics.newPolygonShape
|
-- love.physics.newPolygonShape
|
||||||
-- @NOTE this is just basic nil checking, objs have their own test method
|
-- @NOTE this is just basic nil checking, objs have their own test method
|
||||||
love.test.physics.newPolygonShape = function(test)
|
love.test.physics.newPolygonShape = function(test)
|
||||||
local obj = love.physics.newPolygonShape({0, 0, 2, 3, 2, 1, 3, 1, 5, 1})
|
local world = love.physics.newWorld(1, 1, true)
|
||||||
|
local body = love.physics.newBody(world, 10, 10, 'static')
|
||||||
|
local obj = love.physics.newPolygonShape(body, {0, 0, 2, 3, 2, 1, 3, 1, 5, 1})
|
||||||
test:assertObject(obj)
|
test:assertObject(obj)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -206,8 +270,10 @@ end
|
|||||||
-- love.physics.newRectangleShape
|
-- love.physics.newRectangleShape
|
||||||
-- @NOTE this is just basic nil checking, objs have their own test method
|
-- @NOTE this is just basic nil checking, objs have their own test method
|
||||||
love.test.physics.newRectangleShape = function(test)
|
love.test.physics.newRectangleShape = function(test)
|
||||||
local shape1 = love.physics.newRectangleShape(10, 20)
|
local world = love.physics.newWorld(1, 1, true)
|
||||||
local shape2 = love.physics.newRectangleShape(10, 10, 40, 30, 10)
|
local body = love.physics.newBody(world, 10, 10, 'static')
|
||||||
|
local shape1 = love.physics.newRectangleShape(body, 10, 20)
|
||||||
|
local shape2 = love.physics.newRectangleShape(body, 10, 10, 40, 30, 10)
|
||||||
test:assertObject(shape1)
|
test:assertObject(shape1)
|
||||||
test:assertObject(shape2)
|
test:assertObject(shape2)
|
||||||
end
|
end
|
||||||
|
|||||||