summaryrefslogtreecommitdiff
path: root/src/world/agent.test.js
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2023-11-06 00:34:06 -0600
committersanine <sanine.not@pm.me>2023-11-06 00:34:06 -0600
commit078a01a078dae15b5e8e3482b57f156ecd0c7fae (patch)
treef60cdd0e537663fd4e7856786dd5ec6ce5168d55 /src/world/agent.test.js
parent7274cef10061f0b9c2c907b730589b4f221b2487 (diff)
implement flag conflicts
Diffstat (limited to 'src/world/agent.test.js')
-rw-r--r--src/world/agent.test.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/world/agent.test.js b/src/world/agent.test.js
index 2a86908..fe73b25 100644
--- a/src/world/agent.test.js
+++ b/src/world/agent.test.js
@@ -5,6 +5,8 @@ import {
// --===== proposal conflicts =====--
+// tile updates
+
test("proposals changing different tiles don't conflict", () => {
const a = {
world_changes: [{ x: 4, y: 3, from: 'empty', to: 'mutable' }],
@@ -41,6 +43,32 @@ test("proposals changing the same tile to the same state merge to a single propo
});
+test("proposals with identical tile updates but incompatible tile flags conflict", () => {
+ const a = {
+ world_changes: [{ x: 4, y: 3, from: 'empty', to: 'mutable', flags: { v: 'a' } }],
+ };
+ const b = {
+ world_changes: [{ x: 4, y: 3, from: 'empty', to: 'mutable', flags: { v: 'b' } }],
+ };
+
+ expect(proposal_merge([a], b)).toEqual([]);
+});
+
+
+test("proposals with identical tile updates but compatible tile flags do not conflict", () => {
+ const a = {
+ world_changes: [{ x: 4, y: 3, from: 'empty', to: 'mutable', flags: { v: 'a', r: 'd' } }],
+ };
+ const b = {
+ world_changes: [{ x: 4, y: 3, from: 'empty', to: 'mutable', flags: { v: 'a', u: 'b' } }],
+ };
+
+ expect(proposal_merge([a], b)).toEqual([a, b]);
+});
+
+
+
+
test("proposals moving two agents to the same tile conflict", () => {
const a = {
agent_changes: [{ agent_id: 'aaa', x: 4, y: 3 }],
@@ -53,6 +81,7 @@ test("proposals moving two agents to the same tile conflict", () => {
});
+// agent updates
test("proposals moving two agents to different tiles do not conflict", () => {
const a = {
agent_changes: [{ agent_id: 'aaa', x: 4, y: 3 }],
@@ -87,3 +116,42 @@ test("proposals moving the same agent to the same tile merge", () => {
expect(proposal_merge([a], b)).toEqual([a]);
});
+
+
+test("proposals setting flags on different agents do not conflict", () => {
+ const a = {
+ agent_changes: [{ agent_id: 'aaa', flags: { frozen: false } }],
+ };
+
+ const b = {
+ agent_changes: [{ agent_id: 'bbb', flags: { frozen: false } }],
+ };
+
+ expect(proposal_merge([a], b)).toEqual([a, b]);
+});
+
+
+test("setting the same agent to compatible flags does not conflict", () => {
+ const a = {
+ agent_changes: [{ agent_id: 'aaa', flags: { frozen: false } }],
+ };
+
+ const b = {
+ agent_changes: [{ agent_id: 'aaa', flags: { crumpet: 'hi' } }],
+ };
+
+ expect(proposal_merge([a], b)).toEqual([a, b]);
+});
+
+
+test("setting the same agent to incompatible flags does conflict", () => {
+ const a = {
+ agent_changes: [{ agent_id: 'aaa', flags: { frozen: false } }],
+ };
+
+ const b = {
+ agent_changes: [{ agent_id: 'aaa', flags: { frozen: true, crumpet: 'hi' } }],
+ };
+
+ expect(proposal_merge([a], b)).toEqual([]);
+});