Fix the mock.

This commit is contained in:
Davy Hélard
2023-11-13 21:35:16 +01:00
parent e533637c1e
commit 66b0cb6349
4 changed files with 46 additions and 31 deletions

View File

@@ -21,11 +21,15 @@ namespace gdjs {
* @param items The content of the Hashtable.
* @returns The new picked objects lists.
*/
export const newFrom = (items: {
[key: string]: Array<gdjs.RuntimeObject>;
}): ObjectsLists => {
export const newFrom = (
items: {
[key: string]: Array<gdjs.RuntimeObject>;
},
isPicked: boolean
): ObjectsLists => {
const hashtable = new ObjectsLists();
hashtable.items = items;
hashtable.isPicked = isPicked;
return hashtable;
};

View File

@@ -1,19 +1,5 @@
// @ts-check
/**
* @param {{ [key: string]: Array<gdjs.RuntimeObject> }} items
* @param {boolean} isPicked
* @return {ObjectsLists}
*/
const createObjectsListsFrom = (items, isPicked) => {
/** @type {ObjectsLists} */
//@ts-ignore
const hashtable = new Hashtable();
hashtable.items = items;
hashtable.isPicked = isPicked;
return hashtable;
};
describe('gdjs.evtTools.object', function () {
it('can count picked instances of objects', function () {
const runtimeGame = gdjs.getPixiRuntimeGame();
@@ -27,7 +13,7 @@ describe('gdjs.evtTools.object', function () {
expect(
gdjs.evtTools.object.getPickedInstancesCount(
createObjectsListsFrom(
gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [objectA1, objectA2],
MyObjectB: [objectB1],
@@ -38,7 +24,7 @@ describe('gdjs.evtTools.object', function () {
).to.be(3);
expect(
gdjs.evtTools.object.getPickedInstancesCount(
createObjectsListsFrom(
gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [],
MyObjectB: [],
@@ -51,7 +37,7 @@ describe('gdjs.evtTools.object', function () {
// Also test the deprecated name for this function:
expect(
gdjs.evtTools.object.pickedObjectsCount(
createObjectsListsFrom(
gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [objectA1, objectA2],
MyObjectB: [objectB1],
@@ -75,7 +61,7 @@ describe('gdjs.evtTools.object', function () {
expect(
gdjs.evtTools.object.getSceneInstancesCount(
runtimeScene,
createObjectsListsFrom(
gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [objectA1],
MyObjectB: [objectB1],
@@ -87,7 +73,7 @@ describe('gdjs.evtTools.object', function () {
expect(
gdjs.evtTools.object.getSceneInstancesCount(
runtimeScene,
createObjectsListsFrom(
gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [objectA1],
MyObjectB: [],
@@ -99,7 +85,7 @@ describe('gdjs.evtTools.object', function () {
expect(
gdjs.evtTools.object.getSceneInstancesCount(
runtimeScene,
createObjectsListsFrom(
gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [objectA1],
},
@@ -110,7 +96,7 @@ describe('gdjs.evtTools.object', function () {
expect(
gdjs.evtTools.object.getSceneInstancesCount(
runtimeScene,
createObjectsListsFrom(
gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [],
},
@@ -121,7 +107,7 @@ describe('gdjs.evtTools.object', function () {
expect(
gdjs.evtTools.object.getSceneInstancesCount(
runtimeScene,
createObjectsListsFrom(
gdjs.evtTools.objectsLists.newFrom(
{
MyObjectC: [],
},
@@ -144,7 +130,7 @@ describe('gdjs.evtTools.object', function () {
runtimeScene.createObject('MyObjectA');
// 1 of 2 instances are picked.
const pickedObjectList = createObjectsListsFrom(
const pickedObjectList = gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [objectA1],
},
@@ -175,7 +161,7 @@ describe('gdjs.evtTools.object', function () {
runtimeScene.createObject('MyObjectA');
// 0 of 2 instances are picked.
const pickedObjectList = createObjectsListsFrom(
const pickedObjectList = gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [],
},
@@ -205,7 +191,7 @@ describe('gdjs.evtTools.object', function () {
const objectA2 = runtimeScene.createObject('MyObjectA');
// All instances are picked.
const pickedObjectList = createObjectsListsFrom(
const pickedObjectList = gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [objectA1, objectA2],
},
@@ -238,7 +224,7 @@ describe('gdjs.evtTools.object', function () {
runtimeScene.createObject('MyObjectB');
// 2 of 3 instances are picked.
const pickedObjectList = createObjectsListsFrom(
const pickedObjectList = gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [objectA1],
MyObjectB: [objectB1],
@@ -275,7 +261,7 @@ describe('gdjs.evtTools.object', function () {
// All instances are picked.
/** @type {ObjectsLists} */
const pickedObjectList = createObjectsListsFrom(
const pickedObjectList = gdjs.evtTools.objectsLists.newFrom(
{
MyObjectA: [objectA1, objectA2],
MyObjectB: [objectB1],

View File

@@ -779,6 +779,27 @@ class LongLivedObjectsList {
}
}
const clearObjectsLists = (objectsLists) => {
for (const k in objectsLists.items) {
if (objectsLists.items.hasOwnProperty(k)) {
objectsLists.items[k].length = 0;
}
}
};
const addObject = (
objectsLists,
objectName,
object
) => {
if (!objectsLists.isPicked) {
// A picking starts from empty lists.
clearObjectsLists(objectsLists);
objectsLists.isPicked = true;
}
objectsLists.get(objectName).push(object);
};
/**
* Create a minimal mock of GDJS with a RuntimeScene (`gdjs.RuntimeScene`),
* supporting setting a variable, using "Trigger Once" conditions
@@ -812,6 +833,9 @@ function makeMinimalGDJSMock(options) {
common: {
resolveAsyncEventsFunction: ({ task }) => task.resolve(),
},
objectsLists: {
addObject,
}
},
registerBehavior: (behaviorTypeName, Ctor) => {
behaviorCtors[behaviorTypeName] = Ctor;

View File

@@ -538,7 +538,8 @@ describe('libGD.js - GDJS Code Generation integration tests', function () {
const runCompiledEvents = generateCompiledEventsForEventsFunction(
gd,
project,
eventsFunction
eventsFunction,
false
);
const { gdjs, runtimeScene } = makeMinimalGDJSMock();