diff options
author | sanine <sanine.not@pm.me> | 2023-11-05 22:35:03 -0600 |
---|---|---|
committer | sanine <sanine.not@pm.me> | 2023-11-05 22:35:03 -0600 |
commit | 639a559dd44d924c6b2e545c7d2eb28b11d4a314 (patch) | |
tree | b204025fca8c4eb695ae49dc98a6f912bbc9b4b5 /src/world/agent.test.js | |
parent | 19d89c43e5552f16080240ebf739cce142515c94 (diff) |
begin implementing agent proposals
Diffstat (limited to 'src/world/agent.test.js')
-rw-r--r-- | src/world/agent.test.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/world/agent.test.js b/src/world/agent.test.js new file mode 100644 index 0000000..ea64fcb --- /dev/null +++ b/src/world/agent.test.js @@ -0,0 +1,44 @@ +import { + proposal_merge, +} from './agent.js'; + + +// --===== proposal conflicts =====-- + +test("proposals changing different tiles don't conflict", () => { + const a = { + world_changes: [{ x: 4, y: 3, from: 'empty', to: 'mutable' }], + }; + + const b = { + world_changes: [{ x: 4, y: 4, from: 'empty', to: 'flag' }], + }; + + expect(proposal_merge([a], b)).toEqual([a, b]); +}); + + +test("proposals changing the same tile to different states conflict", () => { + const a = { + world_changes: [{ x: 4, y: 3, from: 'empty', to: 'mutable' }], + }; + + const b = { + world_changes: [{ x: 4, y: 3, from: 'empty', to: 'flag' }], + }; + + expect(proposal_merge([a], b)).toEqual([]); +}); + + +test("proposals changing the same tile to the same state merge to a single proposal", () => { + const a = { + world_changes: [{ x: 4, y: 3, from: 'empty', to: 'mutable' }], + }; + + const b = { + world_changes: [{ x: 4, y: 3, from: 'empty', to: 'mutable' }], + }; + + expect(proposal_merge([a], b)).toEqual([a]); +}); |