summaryrefslogtreecommitdiff
path: root/src/simulation/validity.test.js
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2023-11-11 13:46:59 -0600
committersanine <sanine.not@pm.me>2023-11-11 13:46:59 -0600
commit7a3fc898def0283ed6655b5c45a5f413638272a7 (patch)
tree5427b61d327143ea9c305f2a53dd68435c66b3bc /src/simulation/validity.test.js
parent50f27be0cd94744a7f217ecfae2f913803ae6c44 (diff)
prevent agents from moving into immutable tiles
Diffstat (limited to 'src/simulation/validity.test.js')
-rw-r--r--src/simulation/validity.test.js43
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,
+ });
+});