@tdurtschi/bug
Version:
Bug is a simulation that models a weevil walking around in an HTML canvas.
87 lines • 4.48 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var game_engine_1 = require("./game-engine");
var entity_manager_1 = __importDefault(require("./entity-manager"));
var bug_1 = __importDefault(require("./entities/bug/bug"));
var fakeUI_1 = __importDefault(require("../../spec/fixtures/fakeUI"));
var plant_1 = __importDefault(require("./entities/plant/plant"));
describe("Game Engine", function () {
beforeEach(function () { return jasmine.clock().install(); });
afterEach(function () { return jasmine.clock().uninstall(); });
var getGameEngine = function (_a) {
var gameUI = _a.gameUI, entityManager = _a.entityManager;
return new game_engine_1.GameEngine({ gameUI: gameUI, entityManager: entityManager, width: 0, height: 0 });
};
var fakeUI;
beforeEach(function () {
fakeUI = fakeUI_1.default();
});
it("Creates as an unstarted game", function () {
var spyBug = Object.assign(new bug_1.default(), { update: jasmine.createSpy("BUG-update") });
getGameEngine({ gameUI: fakeUI, entityManager: new entity_manager_1.default([spyBug]) });
jasmine.clock().tick(1000);
expect(spyBug.update).not.toHaveBeenCalled();
});
it("Updates entities after game is started", function () {
var spyBug = Object.assign(new bug_1.default(), { update: jasmine.createSpy("BUG-update") });
var game = getGameEngine({ gameUI: fakeUI, entityManager: new entity_manager_1.default([spyBug]) });
game.start();
jasmine.clock().tick(1000);
expect(spyBug.update).toHaveBeenCalled();
});
it("Starts the UI after game is started", function () {
var game = getGameEngine({ gameUI: fakeUI, entityManager: new entity_manager_1.default([]) });
game.start();
expect(fakeUI.start).toHaveBeenCalled();
});
it("Doesn't update entities when paused.", function () {
var spyBug = Object.assign(new bug_1.default(), { update: jasmine.createSpy("BUG-update") });
var game = getGameEngine({ gameUI: fakeUI, entityManager: new entity_manager_1.default([spyBug]) });
game.start();
game.togglePause();
jasmine.clock().tick(1000);
expect(spyBug.update).not.toHaveBeenCalled();
});
it("Pauses the UI when paused", function () {
var game = getGameEngine({ gameUI: fakeUI, entityManager: new entity_manager_1.default([]) });
game.togglePause();
expect(fakeUI.togglePause).toHaveBeenCalled();
});
it("Can add a bug to the game", function () {
var game = getGameEngine({ gameUI: fakeUI, entityManager: new entity_manager_1.default([]) });
game.addBug({ id: 80 });
expect(game.getEntities().length).toBeGreaterThan(0);
expect(game.getEntities().filter(function (e) { return e instanceof bug_1.default; })[0].id).toEqual(80);
});
it("Can add a plant to the game", function () {
var game = getGameEngine({ gameUI: fakeUI, entityManager: new entity_manager_1.default([]) });
game.addPlant({ id: 100 });
expect(game.getEntities().length).toBeGreaterThan(0);
expect(game.getEntities().filter(function (e) { return e instanceof plant_1.default; })[0].id).toEqual(100);
});
it("Updates the game entities slower when the speed is reduced", function () {
var update = jasmine.createSpy("BUG-update");
var spyBug = Object.assign(new bug_1.default(), { update: update });
var game = getGameEngine({ gameUI: fakeUI, entityManager: new entity_manager_1.default([spyBug]) });
game.start();
game.setSpeed(100);
jasmine.clock().tick(1000);
var updateCount100 = update.calls.count();
update.calls.reset();
game.setSpeed(50);
jasmine.clock().tick(1000);
var updateCount50 = update.calls.count();
expect(updateCount100).withContext("Game update count was wrong").toBeGreaterThan(updateCount50);
});
it("Updates the game entities slower when the speed is reduced", function (done) {
var game = getGameEngine({ gameUI: fakeUI, entityManager: new entity_manager_1.default([]) });
game.start();
game.setSpeed(0);
jasmine.clock().tick(1000);
done();
});
});
//# sourceMappingURL=game-engine.spec.js.map