From 78f2f5f4b1ccd58bbdef0d5e5d2dd026ac4ad668 Mon Sep 17 00:00:00 2001 From: sanine Date: Sat, 11 Nov 2023 13:58:56 -0600 Subject: add postprocessing rule to freeze agents --- src/simulation/postprocess.test.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/simulation/postprocess.test.js (limited to 'src/simulation/postprocess.test.js') diff --git a/src/simulation/postprocess.test.js b/src/simulation/postprocess.test.js new file mode 100644 index 0000000..dc77c6a --- /dev/null +++ b/src/simulation/postprocess.test.js @@ -0,0 +1,37 @@ +'use strict'; + +import { world_update } from '../world/world.js'; +import { postprocess } from './postprocess.js'; + +test("agents freeze when finishing on a mutable or active", () => { + const agent = { + id: 1, + net: { compute: () => [[1], null] }, + state: null, + x: 0, y: 0, + flags: {}, + }; + + const lattice = [[{ type: 'empty', flags: {} }]]; + + const world = { + lattice, + lattice_rules: { empty: ()=>{}, active: ()=>{}, mutable: ()=>{} }, + agents: [agent], + senses: [], + actions: [], + validity: [], + }; + + expect(world_update(world, postprocess).agents[0]).toEqual(agent); + world.lattice[0][0].type = 'mutable'; + expect(world_update(world, postprocess).agents[0]).toEqual({ + ...agent, + flags: { frozen: true }, + }); + world.lattice[0][0].type = 'active'; + expect(world_update(world, postprocess).agents[0]).toEqual({ + ...agent, + flags: { frozen: true }, + }); +}); -- cgit v1.2.1