22 lines
873 B
JavaScript
22 lines
873 B
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { Game, solve, validateLevel } from '../src/core.js';
|
|
import { makeLabLevel } from '../labs/hex-video/fixture.js';
|
|
|
|
test('video lab fixture validates and can complete through real game actions', () => {
|
|
const level = makeLabLevel();
|
|
assert.deepEqual(validateLevel(level), []);
|
|
assert.equal(level.tiles.length, 18);
|
|
const solution = solve(level), game = new Game(level);
|
|
assert.equal(solution.solvable, true);
|
|
const blocked = game.tap('lab-0');
|
|
assert.equal(blocked.status, 'blocked');
|
|
assert.equal(game.moves, level.moveLimit);
|
|
for (const id of solution.order) assert.equal(game.tap(id).status, 'exit');
|
|
assert.equal(game.won, true);
|
|
assert.equal(game.moves, 0);
|
|
assert.equal(game.undo(), true);
|
|
assert.equal(game.won, false);
|
|
assert.equal(game.tiles.length, 1);
|
|
});
|