diff options
author | sanine <sanine.not@pm.me> | 2023-11-11 13:46:59 -0600 |
---|---|---|
committer | sanine <sanine.not@pm.me> | 2023-11-11 13:46:59 -0600 |
commit | 7a3fc898def0283ed6655b5c45a5f413638272a7 (patch) | |
tree | 5427b61d327143ea9c305f2a53dd68435c66b3bc /src/simulation/validity.test.js | |
parent | 50f27be0cd94744a7f217ecfae2f913803ae6c44 (diff) |
prevent agents from moving into immutable tiles
Diffstat (limited to 'src/simulation/validity.test.js')
-rw-r--r-- | src/simulation/validity.test.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/simulation/validity.test.js b/src/simulation/validity.test.js new file mode 100644 index 0000000..ba9e684 --- /dev/null +++ b/src/simulation/validity.test.js @@ -0,0 +1,43 @@ +'use strict'; + +import { world_update } from '../world/world.js'; +import { validity } from './validity.js'; + +test("agents are not allowed to move into immutables", () => { + const actions = [{ + size: 1, propose: (world, agent, head) => { + return [{ + agent_changes: [{ + agent_id: agent.id, + x: agent.x + 1, y: agent.y, + }], + }]; + }, + }]; + + const agent = { + id: 1, + net: { compute: () => [[1], null] }, + state: null, + x: 0, y: 0, + flags: {}, + }; + + const lattice = [[{ type: 'empty', flags: {} }, { type: 'immutable', flags: {} }]]; + + const world = { + lattice, + lattice_rules: { empty: ()=>{}, immutable: ()=>{} }, + agents: [agent], + senses: [], + actions, + validity, + }; + + expect(world_update(world).agents[0]).toEqual(agent); + world.validity = []; + expect(world_update(world).agents[0]).toEqual({ + ...agent, + x: 1, y: 0, + }); +}); |