diff options
Diffstat (limited to 'src/deconstruct.test.ts')
| -rw-r--r-- | src/deconstruct.test.ts | 79 |
1 files changed, 79 insertions, 0 deletions
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<SFItem> = [ + { + 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<SFItem> = [ + { + 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); +}); |