- commit
- 79f2d2c820218a0c5ae419815f08b11ac0b2f3bb
- parent
- 60fa0c017c61d20d13845ca00f0fc6cf6e77f5a6
- author
- Dami <dami.etoile@gmail.com>
| M | src/ | 1 | + |
| M | tests/ | 14 | ++++++++++++++ |
@@ -370,6 +370,7 @@ export function createGame(level) {
370370 const before = clone(state);371371 if (!history.length) return settled('undo', false, before);372372 state = history.pop();373+ indexes = buildIndexes(state, state.rules, semanticProperties);373374 return settled('undo', true, before, null, new Map(), true);374375 }375376 reset();@@ -394,3 +394,17 @@ test('undo keeps the complete movement history', () => {
394394 assert.equal(game.undo().accepted, false);395395 assert.equal(game.getState().moves, 0);396396 });397+398+test('a new turn after Undo moves the restored objects and updates its indexes', () => {399+ const game = createGame(level([400+ word('BABA', 0, 0), word('IS', 1, 0), word('YOU', 2, 0),401+ object('BABA', 0, 1),402+ ]));403+ game.step(1, 0);404+ game.undo();405+ const result = game.step(1, 0);406+ assert.equal(result.accepted, true);407+ assert.deepEqual(result.moved.map(entry => entry.to), [{ x: 1, y: 1 }]);408+ const restoredActor = game.getState().objects.find(entry => entry.noun === 'BABA');409+ assert.deepEqual({ x: restoredActor.x, y: restoredActor.y }, { x: 1, y: 1 });410+});