[ascii] Test graphics backend, first unit test

This commit is contained in:
2021-04-26 18:13:52 -06:00
parent 5e16fd84f4
commit 31e918e3f2
7 changed files with 83 additions and 5 deletions

View File

@@ -1,4 +0,0 @@
-lib kiss
-cp src
--main Main
--interp

View File

@@ -0,0 +1,7 @@
package asciilib.backends.test;
import asciilib.GraphicsBackend;
import asciilib.Graphics;
@:build(kiss.Kiss.build())
class TestGraphicsBackend implements GraphicsBackend {}

View File

@@ -0,0 +1,12 @@
(defprop &mut :Int letterWidth 0)
(defprop &mut :Int letterHeight 0)
(defprop &mut :Int drawCalled 0)
(defmethod new [] 0)
(defmethod :Void initialize [:String title :Int width :Int height :Int _letterWidth :Int _letterHeight]
(set letterWidth _letterWidth)
(set letterHeight _letterHeight))
(defmethod :Void draw [:Graphics graphics]
(+= drawCalled 1))

3
projects/asciilib2/test.sh Normal file → Executable file
View File

@@ -1,3 +1,4 @@
#! /bin/bash #! /bin/bash
haxe build.hxml haxelib dev asciilib .
(cd test && haxe build.hxml)

View File

@@ -0,0 +1,6 @@
-lib kiss
-lib asciilib
-lib utest
-cp src
--main Main
--interp

View File

@@ -0,0 +1,20 @@
package;
import utest.Runner;
import utest.ui.Report;
import asciilib.GameLogic;
import asciilib.Game;
import asciilib.backends.test.*;
class Main {
public static function newGame(logic:GameLogic) {
return new Game("Test game", 100, 40, 8, 12, logic, new TestGraphicsBackend());
}
static function main() {
var runner = new Runner();
runner.addCases(cases);
Report.create(runner);
runner.run();
}
}

View File

@@ -0,0 +1,36 @@
package cases;
import utest.Test;
import utest.Assert;
import asciilib.GameLogic;
import asciilib.Game;
import asciilib.Graphics;
import asciilib.Colors;
import asciilib.backends.test.TestGraphicsBackend;
class DrawOnlyWhenModifiedGameLogic implements GameLogic {
var firstDraw = true;
public function new() {}
public function update(deltaSeconds:Float):Void {}
public function draw(graphics:Void->Graphics):Void {
if (firstDraw) {
graphics().setLetter(0, 0, {char: "@", color: Colors.Red});
firstDraw = false;
}
}
}
class DrawOnlyWhenModifiedTestCase extends Test {
function testDrawOnlyWhenModified() {
var game = Main.newGame(new DrawOnlyWhenModifiedGameLogic());
var graphicsBackend:TestGraphicsBackend = cast game.graphicsBackend;
game.draw();
Assert.equals("@", game.graphics.getLetter(0, 0).char);
Assert.equals(1, graphicsBackend.drawCalled);
game.draw();
Assert.equals(1, graphicsBackend.drawCalled);
}
}