UNPKG

slp-enforcer

Version:

Finds violations of the Melee Controller Ruleset by inspecting SLP files

63 lines (62 loc) 3.13 kB
"use strict"; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const globals_1 = require("@jest/globals"); const index_1 = require("../index"); const fs = __importStar(require("fs")); const path = __importStar(require("path")); globals_1.test('Test average travel time', () => { // AAA BB C DD // Three targets, one travel // Two conversions between travel points. Thus 50% var coords = []; coords.push({ x: 0, y: 0 }); coords.push({ x: 0, y: 0 }); coords.push({ x: 0, y: 0 }); coords.push({ x: 1, y: 1 }); coords.push({ x: 1, y: 1 }); coords.push({ x: 0.5, y: 0.5 }); coords.push({ x: -1, y: -1 }); coords.push({ x: -1, y: -1 }); globals_1.expect(index_1.averageTravelCoordHitRate(coords)).toBeCloseTo(0.5); }); globals_1.test('Test average travel time from legal digital file', () => { for (let i = 1; i <= 7; i++) { let data = fs.readFileSync(path.join(__dirname, '../../test_data/legal/digital/potion_p3/potion_' + i + '.slp'), null); let game = new index_1.SlippiGame(index_1.toArrayBuffer(data)); globals_1.expect(game).not.toBeNull(); let gameCoords = index_1.getCoordListFromGame(game, 2, true); globals_1.expect(index_1.hasIllegalTravelTime(game, 2, gameCoords).result).toEqual(false); globals_1.expect(index_1.averageTravelCoordHitRate(gameCoords)).toBeGreaterThan(0.30); } }); globals_1.test('Test average travel time from legal analog file', async () => { const slpDir = path.join(__dirname, '../../test_data/legal/analog/traveltime/'); const files = await fs.promises.readdir(slpDir); for (const filename of files) { var data = fs.readFileSync(path.join(slpDir, filename), null); let game = new index_1.SlippiGame(index_1.toArrayBuffer(data)); globals_1.expect(game).not.toBeNull(); let gameCoords = index_1.getCoordListFromGame(game, 2, true); globals_1.expect(index_1.hasIllegalTravelTime(game, 2, gameCoords).result).toEqual(false); globals_1.expect(index_1.averageTravelCoordHitRate(gameCoords)).toBeGreaterThan(0.85); } }); globals_1.test('Test average travel time from non-legal digital file', async () => { const slpDir = path.join(__dirname, '../../test_data/nonlegal/digital/pre-ruleset/'); const files = await fs.promises.readdir(slpDir); for (const filename of files) { var data = fs.readFileSync(path.join(slpDir, filename), null); let game = new index_1.SlippiGame(index_1.toArrayBuffer(data)); globals_1.expect(game).not.toBeNull(); let gameCoords = index_1.getCoordListFromGame(game, 3, true); globals_1.expect(index_1.hasIllegalTravelTime(game, 2, gameCoords).result).toEqual(true); globals_1.expect(index_1.averageTravelCoordHitRate(gameCoords)).toBeLessThan(0.20); } });