Add Canvas nullcheck to render function

This commit is contained in:
Marty Oehme 2018-08-25 14:10:56 +02:00
parent 572406b963
commit 4c6dff35c3
3 changed files with 19 additions and 9 deletions

View file

@ -25,8 +25,9 @@ class SimulationComponent implements OnInit {
canvas.context2D.fillRect(0, 0, canvas.width, canvas.height); canvas.context2D.fillRect(0, 0, canvas.width, canvas.height);
canvas.context2D.setFillColorRgb(0, 255, 0); canvas.context2D.setFillColorRgb(0, 255, 0);
canvas.context2D.fillText(''' canvas.context2D.fillText('''
If you see this\n If you see this
the app is broken :(
the canvas did not load correctly :(
''', canvas.width / 2 - 50, canvas.height / 2); ''', canvas.width / 2 - 50, canvas.height / 2);
// engineService.create(canvas); // engineService.create(canvas);
} }

View file

@ -22,7 +22,7 @@ class Engine {
num _updateLag = 0.0; num _updateLag = 0.0;
num _drawLag = 0.0; num _drawLag = 0.0;
final html.CanvasElement canvas; html.CanvasElement canvas;
Grid _grid = new Grid(GRID_X, GRID_Y); Grid _grid = new Grid(GRID_X, GRID_Y);
bool running = false; bool running = false;
@ -43,7 +43,7 @@ class Engine {
} }
void clear() { void clear() {
_grid = new Grid(100, 100); _grid = new Grid(GRID_X, GRID_Y);
running = false; running = false;
} }
@ -78,8 +78,7 @@ class Engine {
} }
void render([num interp]) { void render([num interp]) {
// print("rendering"); if(canvas != null) _grid.render(canvas, interp);
_grid.render(canvas, interp);
} }
void addPattern( void addPattern(

View file

@ -1,12 +1,22 @@
@TestOn('browser') @TestOn('browser')
import 'dart:html';
import 'package:rules_of_living/src/Engine.dart'; import 'package:rules_of_living/src/Engine.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';
void main() { void main() {
test("Engine can be instantiated without canvas", () { test("Engine can be instantiated without canvas", () {
expect(Engine(), isNot(throwsA(anything))); expect(Engine(), isNot(throwsNoSuchMethodError));
});
test("Engine does not throw errors when calling render directly", () {
Engine sut = new Engine();
// anonymous function necessary since throws can not use functions with args
expect(() => sut.render(), isNot(throwsNoSuchMethodError));
});
test("Engine does not throw errors when processing without attached canvas", () {
Engine sut = new Engine();
// anonymous function necessary since throws can not use functions with args
expect(() => sut.process(1000), isNot(throwsNoSuchMethodError));
}); });
} }