From 43d8f108bed3ae5b9e661f2e4c67a8649112080a Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 15 Jun 2014 12:42:13 -0700 Subject: [PATCH] added tests for signals emitting when component is added/removed; fixed bug with components being removed from entity not emitting signal --- src/family.js | 1 + test/world.js | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/family.js b/src/family.js index 5ab530d..fcdd163 100644 --- a/src/family.js +++ b/src/family.js @@ -99,6 +99,7 @@ var Family = module.exports = Class.extend({ for (i = 0, len = names.length; i < len; ++i) { if (names[i] === componentName) { this._entities.remove(entity); + this.entityRemoved.emit(entity); } } }, diff --git a/test/world.js b/test/world.js index b412c32..c1b3541 100644 --- a/test/world.js +++ b/test/world.js @@ -145,6 +145,43 @@ describe('world', function () { bListener.calledOnce.should.be.false; }); + it('should emit signal when entity has component added', function() { + var world = new CES.World(); + + var abListener = sinon.spy(); + var bListener = sinon.spy(); + world.entityAdded('a', 'b').add(abListener); + + var entity = new CES.Entity(); + entity.addComponent(new CompA()); + world.addEntity(entity); + + abListener.calledOnce.should.be.false; + + entity.addComponent(new CompB()); + + abListener.calledOnce.should.be.true; + }); + + it('should emit signal when entity has component removed', function() { + var world = new CES.World(); + + var abListener = sinon.spy(); + var bListener = sinon.spy(); + world.entityRemoved('a', 'b').add(abListener); + + var entity = new CES.Entity(); + entity.addComponent(new CompA()); + entity.addComponent(new CompB()); + world.addEntity(entity); + + abListener.calledOnce.should.be.false; + + entity.removeComponent('b'); + + abListener.calledOnce.should.be.true; + }); + describe('with system', function() { it('addToWorld should be called when system is added', function() { var world = new CES.World();