From 7274cef10061f0b9c2c907b730589b4f221b2487 Mon Sep 17 00:00:00 2001 From: sanine Date: Sun, 5 Nov 2023 23:25:58 -0600 Subject: implement agent change conflict/merge detection --- src/world/agent.test.js | 51 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) (limited to 'src/world/agent.test.js') diff --git a/src/world/agent.test.js b/src/world/agent.test.js index ea64fcb..2a86908 100644 --- a/src/world/agent.test.js +++ b/src/world/agent.test.js @@ -9,7 +9,6 @@ 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' }], }; @@ -22,7 +21,6 @@ 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' }], }; @@ -35,10 +33,57 @@ test("proposals changing the same tile to the same state merge to a single propo 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]); }); + + +test("proposals moving two agents to the same tile conflict", () => { + const a = { + agent_changes: [{ agent_id: 'aaa', x: 4, y: 3 }], + }; + const b = { + agent_changes: [{ agent_id: 'bbb', x: 4, y: 3 }], + }; + + expect(proposal_merge([a], b)).toEqual([]); +}); + + +test("proposals moving two agents to different tiles do not conflict", () => { + const a = { + agent_changes: [{ agent_id: 'aaa', x: 4, y: 3 }], + }; + const b = { + agent_changes: [{ agent_id: 'bbb', x: 3, y: 3 }], + }; + + expect(proposal_merge([a], b)).toEqual([a, b]); +}); + + +test("proposals moving the same agent to different tiles conflict", () => { + const a = { + agent_changes: [{ agent_id: 'aaa', x: 4, y: 3 }], + }; + const b = { + agent_changes: [{ agent_id: 'aaa', x: 3, y: 3 }], + }; + + expect(proposal_merge([a], b)).toEqual([]); +}); + + +test("proposals moving the same agent to the same tile merge", () => { + const a = { + agent_changes: [{ agent_id: 'aaa', x: 4, y: 3 }], + }; + const b = { + agent_changes: [{ agent_id: 'aaa', x: 4, y: 3 }], + }; + + expect(proposal_merge([a], b)).toEqual([a]); +}); -- cgit v1.2.1