[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

@@ -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);
}
}