59 lines
1.2 KiB
JavaScript
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);
|
|
});
|
|
}); |