describe('gdjs.LinksManager', function () { var runtimeGame = new gdjs.RuntimeGame({ variables: [], properties: { windowWidth: 800, windowHeight: 600 }, resources: { resources: [] }, }); var runtimeScene = new gdjs.RuntimeScene(runtimeGame); runtimeScene.loadFromScene({ layers: [{ name: '', visibility: true, effects: [] }], variables: [], behaviorsSharedData: [], objects: [], instances: [], }); var manager = gdjs.LinksManager.getManager(runtimeScene); var object1A = new gdjs.RuntimeObject(runtimeScene, { name: 'obj1', type: '', behaviors: [], effects: [], }); var object1B = new gdjs.RuntimeObject(runtimeScene, { name: 'obj1', type: '', behaviors: [], effects: [], }); var object1C = new gdjs.RuntimeObject(runtimeScene, { name: 'obj1', type: '', behaviors: [], effects: [], }); var object2A = new gdjs.RuntimeObject(runtimeScene, { name: 'obj1', type: '', behaviors: [], effects: [], }); var object2B = new gdjs.RuntimeObject(runtimeScene, { name: 'obj1', type: '', behaviors: [], effects: [], }); var object2C = new gdjs.RuntimeObject(runtimeScene, { name: 'obj1', type: '', behaviors: [], effects: [], }); runtimeScene.addObject(object1A); runtimeScene.addObject(object1B); runtimeScene.addObject(object1C); runtimeScene.addObject(object2A); runtimeScene.addObject(object2B); runtimeScene.addObject(object2C); it('can link two objects', function () { manager.linkObjects(object1A, object2A); var linkedObjects = manager.getObjectsLinkedWith(object1A); expect(linkedObjects.length).to.be(1); expect(linkedObjects[0]).to.be(object2A); linkedObjects = manager.getObjectsLinkedWith(object2A); expect(linkedObjects.length).to.be(1); expect(linkedObjects[0]).to.be(object1A); }); it('can link more objects', function () { manager.linkObjects(object1A, object2A); //Including the same objects as before manager.linkObjects(object1A, object2B); manager.linkObjects(object1A, object2C); var linkedObjects = manager.getObjectsLinkedWith(object1A); expect(linkedObjects.length).to.be(3); linkedObjects = manager.getObjectsLinkedWith(object2C); expect(linkedObjects.length).to.be(1); expect(linkedObjects[0]).to.be(object1A); }); it('supports removing links', function () { manager.removeLinkBetween(object1A, object2B); var linkedObjects = manager.getObjectsLinkedWith(object1A); expect(linkedObjects.length).to.be(2); manager.linkObjects(object2B, object2C); manager.removeAllLinksOf(object1A); manager.removeAllLinksOf(object1A); linkedObjects = manager.getObjectsLinkedWith(object1A); expect(linkedObjects.length).to.be(0); linkedObjects = manager.getObjectsLinkedWith(object2A); expect(linkedObjects.length).to.be(0); linkedObjects = manager.getObjectsLinkedWith(object2C); expect(linkedObjects.length).to.be(1); expect(linkedObjects[0]).to.be(object2B); }); });