From dbf3d933d84a97259d0c42e7a2a990be545cc2f2 Mon Sep 17 00:00:00 2001 From: Schluffe Date: Wed, 26 Aug 2026 22:29:39 +0200 Subject: [PATCH] test dict --- engine/lib/Dictionary.test.ts | 37 ++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/engine/lib/Dictionary.test.ts b/engine/lib/Dictionary.test.ts index fff137b..56608f9 100644 --- a/engine/lib/Dictionary.test.ts +++ b/engine/lib/Dictionary.test.ts @@ -18,9 +18,6 @@ test("Dictionary", () => { setEntrySave(dict, "bar", 0); deleteEntrySave(dict, "bar"); - console.table(dict.entries); - console.table(dict.indices); - expect(getEntry(dict, "foo")).toBe(42); expect(getEntry(dict, "bar")).toBe(undefined); expect(dict.indices.size).toBe(dict.entries.length); @@ -31,3 +28,37 @@ test("Dictionary", () => { }); expect(sum).toBe(48); }); + +test("Dictionary don't mutate, when used 'save', while iterating", () => { + const dict: Dictionary = createDictionary([ + ["a", 1], + ["b", 2], + ["c", 3], + ]); + + let sum = 0; + forEntry(dict, (value, __, index) => { + if (index < 1) { + setEntrySave(dict, "d", 4); + setEntrySave(dict, "e", 5); + } + + sum += value; + }); + + expect(sum).toBe(6); + expect(dict.indices.size === 5).toEqual(dict.entries.length === 5); + + sum = 0; + forEntry(dict, (value, __, index) => { + if (index < 1) { + deleteEntrySave(dict, "d"); + deleteEntrySave(dict, "e"); + } + + sum += value; + }); + + expect(sum).toBe(15); + expect(dict.indices.size === 3).toEqual(dict.entries.length === 3); +});