summaryrefslogtreecommitdiff
path: root/src/world/agent.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/world/agent.test.js')
-rw-r--r--src/world/agent.test.js44
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]);
+});