diff options
Diffstat (limited to 'src/simulation/postprocess.test.js')
-rw-r--r-- | src/simulation/postprocess.test.js | 37 |
1 files changed, 37 insertions, 0 deletions
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 }, + }); +}); |