import assert from 'node:assert'; import { EntityRegistry } from '../src/ecs.js'; class Position { constructor(x, y) { this.x = x; this.y = y; } } describe('ECS', function () { it('create', function () { let registry = new EntityRegistry(); let id = registry.create(); }); it('destory', function () { let registry = new EntityRegistry(); let id0 = registry.create(); let id1 = registry.destory(id0).create(); assert.equal(id0, id1); }); it('component', function () { let registry = new EntityRegistry(); let id3; for (let i = 0; i < 5; i += 1) { let e = registry.create(); registry.assign(e, new Position(i, i)); if (i == 3) { id3 = e; } } assert.equal(registry.get(id3, Position).x, 3); }); it('forEach', function () { let registry = new EntityRegistry(); let id3; registry.create(); registry.create(); for (let i = 0; i < 5; i += 1) { let e = registry.create(); registry.assign(e, new Position(i, i)); if (i == 3) { id3 = e; } } let count = 0; registry.forEach([], () => { count += 1; }); assert.equal(count, 7); registry.forEach([Position], (id, pos) => { pos.x += 1; }); assert.equal(registry.get(id3, Position).x, 4); }); });