mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-07-24 03:54:34 -04:00
107 lines
3.0 KiB
JavaScript
107 lines
3.0 KiB
JavaScript
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);
|
|
});
|
|
});
|