aboutsummaryrefslogtreecommitdiff
path: root/src/deconstruct.test.ts
diff options
context:
space:
mode:
authortwells46 <tom@wellsth.com>2026-01-25 11:14:07 -0600
committertwells46 <tom@wellsth.com>2026-01-25 11:14:07 -0600
commit8e99f04d9cbc420176e6c28cbff30374dba7e03c (patch)
tree3b01ea994472e376c0684abe8e7aef778df71e29 /src/deconstruct.test.ts
Initial commitHEADmain
Diffstat (limited to 'src/deconstruct.test.ts')
-rw-r--r--src/deconstruct.test.ts79
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);
+});