]> git.localhorst.tv Git - alttp.git/blobdiff - tests/js/helpers/tracker.test.js
base logic test cases
[alttp.git] / tests / js / helpers / tracker.test.js
diff --git a/tests/js/helpers/tracker.test.js b/tests/js/helpers/tracker.test.js
new file mode 100644 (file)
index 0000000..ceaaacc
--- /dev/null
@@ -0,0 +1,204 @@
+import {
+       CONFIG,
+       configureDungeons,
+       getDungeonBoss,
+       getDungeonRemainingItems,
+       makeEmptyState,
+} from 'helpers/tracker';
+
+describe('default dungeon configuration', () => {
+       const dungeons = configureDungeons(CONFIG);
+       const state = makeEmptyState();
+
+       test('HC', () => {
+               const dungeon = dungeons.find(d => d.id === 'hc');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
+       });
+
+       test('CT', () => {
+               const dungeon = dungeons.find(d => d.id === 'ct');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('aga');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(0);
+       });
+
+       test('GT', () => {
+               const dungeon = dungeons.find(d => d.id === 'gt');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('aga');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(20);
+       });
+
+       test('EP', () => {
+               const dungeon = dungeons.find(d => d.id === 'ep');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('armos');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(3);
+       });
+
+       test('DP', () => {
+               const dungeon = dungeons.find(d => d.id === 'dp');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('lanmolas');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
+       });
+
+       test('TH', () => {
+               const dungeon = dungeons.find(d => d.id === 'th');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('moldorm');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
+       });
+
+       test('PD', () => {
+               const dungeon = dungeons.find(d => d.id === 'pd');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('helma');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(5);
+       });
+
+       test('SP', () => {
+               const dungeon = dungeons.find(d => d.id === 'sp');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('arrghus');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
+       });
+
+       test('SW', () => {
+               const dungeon = dungeons.find(d => d.id === 'sw');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('mothula');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
+       });
+
+       test('TT', () => {
+               const dungeon = dungeons.find(d => d.id === 'tt');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('blind');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(4);
+       });
+
+       test('IP', () => {
+               const dungeon = dungeons.find(d => d.id === 'ip');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('kholdstare');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(3);
+       });
+
+       test('MM', () => {
+               const dungeon = dungeons.find(d => d.id === 'mm');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('vitreous');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
+       });
+
+       test('TR', () => {
+               const dungeon = dungeons.find(d => d.id === 'tr');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('trinexx');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(5);
+       });
+});
+
+describe('keysanity dungeon configuration', () => {
+       const config = {
+               ...CONFIG,
+               wildMap: true,
+               wildCompass: true,
+               wildSmall: true,
+               wildBig: true,
+       };
+       const dungeons = configureDungeons(config);
+       const state = makeEmptyState();
+
+       test('HC', () => {
+               const dungeon = dungeons.find(d => d.id === 'hc');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
+       });
+
+       test('CT', () => {
+               const dungeon = dungeons.find(d => d.id === 'ct');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('aga');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
+       });
+
+       test('GT', () => {
+               const dungeon = dungeons.find(d => d.id === 'gt');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('aga');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(27);
+       });
+
+       test('EP', () => {
+               const dungeon = dungeons.find(d => d.id === 'ep');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('armos');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
+       });
+
+       test('DP', () => {
+               const dungeon = dungeons.find(d => d.id === 'dp');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('lanmolas');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
+       });
+
+       test('TH', () => {
+               const dungeon = dungeons.find(d => d.id === 'th');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('moldorm');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
+       });
+
+       test('PD', () => {
+               const dungeon = dungeons.find(d => d.id === 'pd');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('helma');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(14);
+       });
+
+       test('SP', () => {
+               const dungeon = dungeons.find(d => d.id === 'sp');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('arrghus');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(10);
+       });
+
+       test('SW', () => {
+               const dungeon = dungeons.find(d => d.id === 'sw');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('mothula');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
+       });
+
+       test('TT', () => {
+               const dungeon = dungeons.find(d => d.id === 'tt');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('blind');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
+       });
+
+       test('IP', () => {
+               const dungeon = dungeons.find(d => d.id === 'ip');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('kholdstare');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
+       });
+
+       test('MM', () => {
+               const dungeon = dungeons.find(d => d.id === 'mm');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('vitreous');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
+       });
+
+       test('TR', () => {
+               const dungeon = dungeons.find(d => d.id === 'tr');
+               expect(dungeon).not.toBeNull();
+               expect(getDungeonBoss(state, dungeon)).toBe('trinexx');
+               expect(getDungeonRemainingItems(state, dungeon)).toBe(12);
+       });
+});