]> git.localhorst.tv Git - alttp.git/blob - tests/js/helpers/tracker.test.js
base logic test cases
[alttp.git] / tests / js / helpers / tracker.test.js
1 import {
2         CONFIG,
3         configureDungeons,
4         getDungeonBoss,
5         getDungeonRemainingItems,
6         makeEmptyState,
7 } from 'helpers/tracker';
8
9 describe('default dungeon configuration', () => {
10         const dungeons = configureDungeons(CONFIG);
11         const state = makeEmptyState();
12
13         test('HC', () => {
14                 const dungeon = dungeons.find(d => d.id === 'hc');
15                 expect(dungeon).not.toBeNull();
16                 expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
17         });
18
19         test('CT', () => {
20                 const dungeon = dungeons.find(d => d.id === 'ct');
21                 expect(dungeon).not.toBeNull();
22                 expect(getDungeonBoss(state, dungeon)).toBe('aga');
23                 expect(getDungeonRemainingItems(state, dungeon)).toBe(0);
24         });
25
26         test('GT', () => {
27                 const dungeon = dungeons.find(d => d.id === 'gt');
28                 expect(dungeon).not.toBeNull();
29                 expect(getDungeonBoss(state, dungeon)).toBe('aga');
30                 expect(getDungeonRemainingItems(state, dungeon)).toBe(20);
31         });
32
33         test('EP', () => {
34                 const dungeon = dungeons.find(d => d.id === 'ep');
35                 expect(dungeon).not.toBeNull();
36                 expect(getDungeonBoss(state, dungeon)).toBe('armos');
37                 expect(getDungeonRemainingItems(state, dungeon)).toBe(3);
38         });
39
40         test('DP', () => {
41                 const dungeon = dungeons.find(d => d.id === 'dp');
42                 expect(dungeon).not.toBeNull();
43                 expect(getDungeonBoss(state, dungeon)).toBe('lanmolas');
44                 expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
45         });
46
47         test('TH', () => {
48                 const dungeon = dungeons.find(d => d.id === 'th');
49                 expect(dungeon).not.toBeNull();
50                 expect(getDungeonBoss(state, dungeon)).toBe('moldorm');
51                 expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
52         });
53
54         test('PD', () => {
55                 const dungeon = dungeons.find(d => d.id === 'pd');
56                 expect(dungeon).not.toBeNull();
57                 expect(getDungeonBoss(state, dungeon)).toBe('helma');
58                 expect(getDungeonRemainingItems(state, dungeon)).toBe(5);
59         });
60
61         test('SP', () => {
62                 const dungeon = dungeons.find(d => d.id === 'sp');
63                 expect(dungeon).not.toBeNull();
64                 expect(getDungeonBoss(state, dungeon)).toBe('arrghus');
65                 expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
66         });
67
68         test('SW', () => {
69                 const dungeon = dungeons.find(d => d.id === 'sw');
70                 expect(dungeon).not.toBeNull();
71                 expect(getDungeonBoss(state, dungeon)).toBe('mothula');
72                 expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
73         });
74
75         test('TT', () => {
76                 const dungeon = dungeons.find(d => d.id === 'tt');
77                 expect(dungeon).not.toBeNull();
78                 expect(getDungeonBoss(state, dungeon)).toBe('blind');
79                 expect(getDungeonRemainingItems(state, dungeon)).toBe(4);
80         });
81
82         test('IP', () => {
83                 const dungeon = dungeons.find(d => d.id === 'ip');
84                 expect(dungeon).not.toBeNull();
85                 expect(getDungeonBoss(state, dungeon)).toBe('kholdstare');
86                 expect(getDungeonRemainingItems(state, dungeon)).toBe(3);
87         });
88
89         test('MM', () => {
90                 const dungeon = dungeons.find(d => d.id === 'mm');
91                 expect(dungeon).not.toBeNull();
92                 expect(getDungeonBoss(state, dungeon)).toBe('vitreous');
93                 expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
94         });
95
96         test('TR', () => {
97                 const dungeon = dungeons.find(d => d.id === 'tr');
98                 expect(dungeon).not.toBeNull();
99                 expect(getDungeonBoss(state, dungeon)).toBe('trinexx');
100                 expect(getDungeonRemainingItems(state, dungeon)).toBe(5);
101         });
102 });
103
104 describe('keysanity dungeon configuration', () => {
105         const config = {
106                 ...CONFIG,
107                 wildMap: true,
108                 wildCompass: true,
109                 wildSmall: true,
110                 wildBig: true,
111         };
112         const dungeons = configureDungeons(config);
113         const state = makeEmptyState();
114
115         test('HC', () => {
116                 const dungeon = dungeons.find(d => d.id === 'hc');
117                 expect(dungeon).not.toBeNull();
118                 expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
119         });
120
121         test('CT', () => {
122                 const dungeon = dungeons.find(d => d.id === 'ct');
123                 expect(dungeon).not.toBeNull();
124                 expect(getDungeonBoss(state, dungeon)).toBe('aga');
125                 expect(getDungeonRemainingItems(state, dungeon)).toBe(2);
126         });
127
128         test('GT', () => {
129                 const dungeon = dungeons.find(d => d.id === 'gt');
130                 expect(dungeon).not.toBeNull();
131                 expect(getDungeonBoss(state, dungeon)).toBe('aga');
132                 expect(getDungeonRemainingItems(state, dungeon)).toBe(27);
133         });
134
135         test('EP', () => {
136                 const dungeon = dungeons.find(d => d.id === 'ep');
137                 expect(dungeon).not.toBeNull();
138                 expect(getDungeonBoss(state, dungeon)).toBe('armos');
139                 expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
140         });
141
142         test('DP', () => {
143                 const dungeon = dungeons.find(d => d.id === 'dp');
144                 expect(dungeon).not.toBeNull();
145                 expect(getDungeonBoss(state, dungeon)).toBe('lanmolas');
146                 expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
147         });
148
149         test('TH', () => {
150                 const dungeon = dungeons.find(d => d.id === 'th');
151                 expect(dungeon).not.toBeNull();
152                 expect(getDungeonBoss(state, dungeon)).toBe('moldorm');
153                 expect(getDungeonRemainingItems(state, dungeon)).toBe(6);
154         });
155
156         test('PD', () => {
157                 const dungeon = dungeons.find(d => d.id === 'pd');
158                 expect(dungeon).not.toBeNull();
159                 expect(getDungeonBoss(state, dungeon)).toBe('helma');
160                 expect(getDungeonRemainingItems(state, dungeon)).toBe(14);
161         });
162
163         test('SP', () => {
164                 const dungeon = dungeons.find(d => d.id === 'sp');
165                 expect(dungeon).not.toBeNull();
166                 expect(getDungeonBoss(state, dungeon)).toBe('arrghus');
167                 expect(getDungeonRemainingItems(state, dungeon)).toBe(10);
168         });
169
170         test('SW', () => {
171                 const dungeon = dungeons.find(d => d.id === 'sw');
172                 expect(dungeon).not.toBeNull();
173                 expect(getDungeonBoss(state, dungeon)).toBe('mothula');
174                 expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
175         });
176
177         test('TT', () => {
178                 const dungeon = dungeons.find(d => d.id === 'tt');
179                 expect(dungeon).not.toBeNull();
180                 expect(getDungeonBoss(state, dungeon)).toBe('blind');
181                 expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
182         });
183
184         test('IP', () => {
185                 const dungeon = dungeons.find(d => d.id === 'ip');
186                 expect(dungeon).not.toBeNull();
187                 expect(getDungeonBoss(state, dungeon)).toBe('kholdstare');
188                 expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
189         });
190
191         test('MM', () => {
192                 const dungeon = dungeons.find(d => d.id === 'mm');
193                 expect(dungeon).not.toBeNull();
194                 expect(getDungeonBoss(state, dungeon)).toBe('vitreous');
195                 expect(getDungeonRemainingItems(state, dungeon)).toBe(8);
196         });
197
198         test('TR', () => {
199                 const dungeon = dungeons.find(d => d.id === 'tr');
200                 expect(dungeon).not.toBeNull();
201                 expect(getDungeonBoss(state, dungeon)).toBe('trinexx');
202                 expect(getDungeonRemainingItems(state, dungeon)).toBe(12);
203         });
204 });