mirror of
https://github.com/4ian/GDevelop.git
synced 2025-10-15 10:19:04 +00:00
74 lines
2.6 KiB
JavaScript
74 lines
2.6 KiB
JavaScript
|
|
describe('gdjs.LinksManager', function() {
|
|
var runtimeGame = new gdjs.RuntimeGame({variables: [], properties: {windowWidth: 800, windowHeight: 600}});
|
|
var runtimeScene = new gdjs.RuntimeScene(runtimeGame, null);
|
|
runtimeScene.loadFromScene({
|
|
layers:[{name:"", visibility: true}],
|
|
variables: [],
|
|
behaviorsSharedData: [],
|
|
objects: [],
|
|
instances: []
|
|
});
|
|
|
|
var manager = gdjs.LinksManager.getManager(runtimeScene);
|
|
|
|
var object1A = new gdjs.RuntimeObject(runtimeScene, {name: "obj1", type: ""});
|
|
var object1B = new gdjs.RuntimeObject(runtimeScene, {name: "obj1", type: ""});
|
|
var object1C = new gdjs.RuntimeObject(runtimeScene, {name: "obj1", type: ""});
|
|
|
|
var object2A = new gdjs.RuntimeObject(runtimeScene, {name: "obj1", type: ""});
|
|
var object2B = new gdjs.RuntimeObject(runtimeScene, {name: "obj1", type: ""});
|
|
var object2C = new gdjs.RuntimeObject(runtimeScene, {name: "obj1", type: ""});
|
|
|
|
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);
|
|
});
|
|
});
|