summaryrefslogtreecommitdiff
path: root/src/world/agent.test.js
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2023-11-05 23:25:58 -0600
committersanine <sanine.not@pm.me>2023-11-05 23:25:58 -0600
commit7274cef10061f0b9c2c907b730589b4f221b2487 (patch)
treeb76de2774429bdd69e01322233e9ae8b7b838a48 /src/world/agent.test.js
parent639a559dd44d924c6b2e545c7d2eb28b11d4a314 (diff)
implement agent change conflict/merge detection
Diffstat (limited to 'src/world/agent.test.js')
-rw-r--r--src/world/agent.test.js51
1 files changed, 48 insertions, 3 deletions
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]);
+});