X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=tests%2Fjs%2Fhelpers%2Flogic%2Fopen.test.js;fp=tests%2Fjs%2Fhelpers%2Flogic%2Fopen.test.js;h=615c385af393df5731d4d4d2cbab3e7b10ae8a0d;hb=816690cc4fadff954f4407999550f7feec2884da;hp=0000000000000000000000000000000000000000;hpb=f1171d67a86fe2b49f68b09153d9e928b5a0c22d;p=alttp.git diff --git a/tests/js/helpers/logic/open.test.js b/tests/js/helpers/logic/open.test.js new file mode 100644 index 0000000..615c385 --- /dev/null +++ b/tests/js/helpers/logic/open.test.js @@ -0,0 +1,143 @@ +import { + CONFIG, + applyLogic, + configureDungeons, + getLocationStatus, + makeEmptyState, +} from 'helpers/tracker'; + +describe('base reachability', () => { + const config = { ...CONFIG }; + const dungeons = configureDungeons(config); + const state = makeEmptyState(); + const logic = applyLogic(config, dungeons, state); + + test('Dungeon Entrances', () => { + expect(getLocationStatus('hc', logic, state)).toBe('available'); + expect(getLocationStatus('ct', logic, state)).toBe('unavailable'); + expect(getLocationStatus('gt', logic, state)).toBe('unavailable'); + + expect(getLocationStatus('ep', logic, state)).toBe('available'); + expect(getLocationStatus('dp', logic, state)).toBe('unavailable'); + expect(getLocationStatus('th', logic, state)).toBe('unavailable'); + + expect(getLocationStatus('pd', logic, state)).toBe('unavailable'); + expect(getLocationStatus('sp', logic, state)).toBe('unavailable'); + expect(getLocationStatus('sw', logic, state)).toBe('unavailable'); + expect(getLocationStatus('tt', logic, state)).toBe('unavailable'); + expect(getLocationStatus('ip', logic, state)).toBe('unavailable'); + expect(getLocationStatus('mm', logic, state)).toBe('unavailable'); + expect(getLocationStatus('tr', logic, state)).toBe('unavailable'); + }); + + test('East Light World', () => { + expect(getLocationStatus('potion-shop', logic, state)).toBe('unavailable'); + expect(getLocationStatus('saha', logic, state)).toBe('unavailable'); + expect(getLocationStatus('saha-left', logic, state)).toBe('available'); + expect(getLocationStatus('saha-mid', logic, state)).toBe('available'); + expect(getLocationStatus('saha-right', logic, state)).toBe('available'); + expect(getLocationStatus('secret-passage', logic, state)).toBe('available'); + expect(getLocationStatus('uncle', logic, state)).toBe('available'); + expect(getLocationStatus('waterfall-fairy-left', logic, state)).toBe('unavailable'); + expect(getLocationStatus('waterfall-fairy-right', logic, state)).toBe('unavailable'); + expect(getLocationStatus('zora', logic, state)).toBe('unavailable'); + expect(getLocationStatus('zora-ledge', logic, state)).toBe('unavailable'); + }); + + test('West Light World', () => { + expect(getLocationStatus('blinds-hut-far-left', logic, state)).toBe('available'); + expect(getLocationStatus('blinds-hut-left', logic, state)).toBe('available'); + expect(getLocationStatus('blinds-hut-right', logic, state)).toBe('available'); + expect(getLocationStatus('blinds-hut-far-right', logic, state)).toBe('available'); + expect(getLocationStatus('blinds-hut-top', logic, state)).toBe('available'); + expect(getLocationStatus('bonk-rocks', logic, state)).toBe('unavailable'); + expect(getLocationStatus('bottle-vendor', logic, state)).toBe('available'); + expect(getLocationStatus('chicken-house', logic, state)).toBe('available'); + expect(getLocationStatus('graveyard-ledge', logic, state)).toBe('unavailable'); + expect(getLocationStatus('kak-well-bottom', logic, state)).toBe('available'); + expect(getLocationStatus('kak-well-left', logic, state)).toBe('available'); + expect(getLocationStatus('kak-well-right', logic, state)).toBe('available'); + expect(getLocationStatus('kak-well-mid', logic, state)).toBe('available'); + expect(getLocationStatus('kak-well-top', logic, state)).toBe('available'); + expect(getLocationStatus('kings-tomb', logic, state)).toBe('unavailable'); + expect(getLocationStatus('lost-woods-hideout', logic, state)).toBe('available'); + expect(getLocationStatus('lumberjack', logic, state)).toBe('unavailable'); + expect(getLocationStatus('magic-bat', logic, state)).toBe('unavailable'); + expect(getLocationStatus('pedestal', logic, state)).toBe('unavailable'); + expect(getLocationStatus('sick-kid', logic, state)).toBe('unavailable'); + expect(getLocationStatus('tavern', logic, state)).toBe('available'); + }); + + test('South Light World', () => { + expect(getLocationStatus('aginah', logic, state)).toBe('available'); + expect(getLocationStatus('checkerboard', logic, state)).toBe('unavailable'); + expect(getLocationStatus('desert-ledge', logic, state)).toBe('unavailable'); + expect(getLocationStatus('flooded-chest', logic, state)).toBe('available'); + expect(getLocationStatus('hobo', logic, state)).toBe('unavailable'); + expect(getLocationStatus('ice-rod-cave', logic, state)).toBe('available'); + expect(getLocationStatus('lake-hylia-island', logic, state)).toBe('unavailable'); + expect(getLocationStatus('library', logic, state)).toBe('unavailable'); + expect(getLocationStatus('links-house', logic, state)).toBe('available'); + expect(getLocationStatus('mini-moldorm-far-left', logic, state)).toBe('available'); + expect(getLocationStatus('mini-moldorm-left', logic, state)).toBe('available'); + expect(getLocationStatus('mini-moldorm-right', logic, state)).toBe('available'); + expect(getLocationStatus('mini-moldorm-far-right', logic, state)).toBe('available'); + expect(getLocationStatus('mini-moldorm-npc', logic, state)).toBe('available'); + expect(getLocationStatus('race-game', logic, state)).toBe('available'); + expect(getLocationStatus('sunken-treasure', logic, state)).toBe('available'); + }); + + test('Death Mountain', () => { + expect(getLocationStatus('ether-tablet', logic, state)).toBe('unavailable'); + expect(getLocationStatus('floating-island', logic, state)).toBe('unavailable'); + expect(getLocationStatus('mimic-cave', logic, state)).toBe('unavailable'); + expect(getLocationStatus('old-man', logic, state)).toBe('unavailable'); + expect(getLocationStatus('paradox-lower-far-left', logic, state)).toBe('unavailable'); + expect(getLocationStatus('paradox-lower-left', logic, state)).toBe('unavailable'); + expect(getLocationStatus('paradox-lower-mid', logic, state)).toBe('unavailable'); + expect(getLocationStatus('paradox-lower-right', logic, state)).toBe('unavailable'); + expect(getLocationStatus('paradox-lower-far-right', logic, state)).toBe('unavailable'); + expect(getLocationStatus('paradox-upper-left', logic, state)).toBe('unavailable'); + expect(getLocationStatus('paradox-upper-right', logic, state)).toBe('unavailable'); + expect(getLocationStatus('spec-rock', logic, state)).toBe('unavailable'); + expect(getLocationStatus('spec-rock-cave', logic, state)).toBe('unavailable'); + expect(getLocationStatus('spiral-cave', logic, state)).toBe('unavailable'); + }); + + test('East Dark World', () => { + expect(getLocationStatus('brewery', logic, state)).toBe('unavailable'); + expect(getLocationStatus('bumper-cave', logic, state)).toBe('unavailable'); + expect(getLocationStatus('c-house', logic, state)).toBe('unavailable'); + expect(getLocationStatus('chest-game', logic, state)).toBe('unavailable'); + expect(getLocationStatus('hammer-pegs', logic, state)).toBe('unavailable'); + expect(getLocationStatus('purple-chest', logic, state)).toBe('unavailable'); + }); + + test('West Dark World', () => { + expect(getLocationStatus('catfish', logic, state)).toBe('unavailable'); + expect(getLocationStatus('pyramid', logic, state)).toBe('unavailable'); + expect(getLocationStatus('pyramid-fairy-left', logic, state)).toBe('unavailable'); + expect(getLocationStatus('pyramid-fairy-right', logic, state)).toBe('unavailable'); + }); + + test('South Dark World', () => { + expect(getLocationStatus('blacksmith', logic, state)).toBe('unavailable'); + expect(getLocationStatus('digging-game', logic, state)).toBe('unavailable'); + expect(getLocationStatus('hype-cave-top', logic, state)).toBe('unavailable'); + expect(getLocationStatus('hype-cave-left', logic, state)).toBe('unavailable'); + expect(getLocationStatus('hype-cave-right', logic, state)).toBe('unavailable'); + expect(getLocationStatus('hype-cave-bottom', logic, state)).toBe('unavailable'); + expect(getLocationStatus('hype-cave-npc', logic, state)).toBe('unavailable'); + expect(getLocationStatus('stumpy', logic, state)).toBe('unavailable'); + }); + + test('Dark Death Mountain', () => { + expect(getLocationStatus('hookshot-cave-tl', logic, state)).toBe('unavailable'); + expect(getLocationStatus('hookshot-cave-tr', logic, state)).toBe('unavailable'); + expect(getLocationStatus('hookshot-cave-bl', logic, state)).toBe('unavailable'); + expect(getLocationStatus('hookshot-cave-br', logic, state)).toBe('unavailable'); + expect(getLocationStatus('spike-cave', logic, state)).toBe('unavailable'); + expect(getLocationStatus('super-bunny-top', logic, state)).toBe('unavailable'); + expect(getLocationStatus('super-bunny-bottom', logic, state)).toBe('unavailable'); + }); +});