From 8e99f04d9cbc420176e6c28cbff30374dba7e03c Mon Sep 17 00:00:00 2001 From: twells46 Date: Sun, 25 Jan 2026 11:14:07 -0600 Subject: Initial commit --- src/deconstruct.test.ts | 79 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/deconstruct.test.ts (limited to 'src/deconstruct.test.ts') diff --git a/src/deconstruct.test.ts b/src/deconstruct.test.ts new file mode 100644 index 0000000..e374dd5 --- /dev/null +++ b/src/deconstruct.test.ts @@ -0,0 +1,79 @@ +import { SFItem, derive, add, BaseComponents, get } from './deconstruct'; + +test('base returns 1', () => { + const item: SFItem = { + name: 'Iron Ingot', + id: 'iron_ingot', + type: 'base' + }; + const expected = new Map([[item.id, 30]]); + expect(derive(item)).toMatchObject(expected); +}); + +test('add', () => { + const curr: BaseComponents = [['iron_ingot', 30]]; + const val = add(['iron_ingot', 10], curr); + const expected = [['iron_ingot', 40]]; + expect(val).toMatchObject(expected); +}); + +test('add2', () => { + const curr: BaseComponents = [['copper_ore', 10], ['iron_ingot', 30]]; + const val = add(['iron_ingot', 10], curr); + const expected = [['copper_ore', 10], ['iron_ingot', 40]]; + expect(val).toMatchObject(expected); +}); + +test('get undefined', () => { + const ITEMS: Array = [ + { + name: 'Iron Ingot', + id: 'iron_ingot', + type: 'base' + }, + ]; + const val = get('iron_plate', ITEMS); + const expected = undefined; + expect(val).toBe(expected); +}); + +test('get existing', () => { + const ITEMS: Array = [ + { + name: 'Iron Ingot', + id: 'iron_ingot', + type: 'base' + }, + ]; + const val = get('iron_ingot', ITEMS); + const expected = ITEMS[0]; + expect(val).toMatchObject(expected); +}); + +test('level 1', () => { + const item: SFItem = { + name: 'Iron Plate', + id: 'iron_plate', + type: 'derived', + recipe: { + in: [['iron_ingot', 30]], + out: 20 + } + }; + const expected = [['iron_ingot', 30]]; + expect(derive(item)).toMatchObject(expected); +}); + +test('level 2', () => { + const item: SFItem = { + name: 'Screw', + id: 'screw', + type: 'derived', + recipe: { + in: [['iron_rod', 10]], + out: 40 + } + }; + const expected = [['iron_ingot', 40]]; + expect(derive(item)).toMatchObject(expected); +}); -- cgit v1.2.3