openarras/tests/ecs.test.js
2023-05-31 14:53:06 +08:00

59 lines
1.2 KiB
JavaScript

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);
});
});