UNPKG

step-sequence-generator

Version:

A step sequence generator for figure skating programs

94 lines (93 loc) 5.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const MovementChanceRatioMapGenerator_1 = require("./MovementChanceRatioMapGenerator"); const movement_enums_1 = require("../../shared/enums/movement-enums"); const mockChanceRatioMap = new Map([ [movement_enums_1.ExtendedMovementCharacter.STEP, 8], [movement_enums_1.ExtendedMovementCharacter.TURN, 9], [movement_enums_1.ExtendedMovementCharacter.SEQUENCE, 9], [movement_enums_1.ExtendedMovementCharacter.HOP, 8], [movement_enums_1.ExtendedMovementCharacter.GLIDE, 8], [movement_enums_1.ExtendedMovementCharacter.UNKNOWN, 8], [movement_enums_1.ExtendedMovementCharacter.DIFFICULT, 50], ]); const mockGroupMovementCounted = new Map([ [movement_enums_1.ExtendedMovementCharacter.UNKNOWN, 3], [movement_enums_1.ExtendedMovementCharacter.TURN, 1], [movement_enums_1.ExtendedMovementCharacter.DIFFICULT, 2], [movement_enums_1.ExtendedMovementCharacter.STEP, 1], ]); (0, vitest_1.describe)('MovementChanceRatioMapGenerator', () => { let chanceRatioMapGenerator; // eslint-disable-next-line let chanceRatioMapGeneratorAny; (0, vitest_1.beforeEach)(() => { chanceRatioMapGenerator = new MovementChanceRatioMapGenerator_1.MovementChanceRatioMapGenerator(); // eslint-disable-next-line chanceRatioMapGeneratorAny = chanceRatioMapGenerator; }); (0, vitest_1.describe)('implementation', () => { (0, vitest_1.it)('должен корректно создаваться', () => { (0, vitest_1.expect)(chanceRatioMapGenerator).toBeDefined(); }); }); (0, vitest_1.describe)('recalculateChanceRatio', () => { (0, vitest_1.describe)('должен вызывать методы', () => { const methodNameList = [ 'getActualChanceRatioMap', 'separatePercentByType', 'redistributeChanceRatio', ]; vitest_1.it.each(methodNameList)('метод %s', (methodName) => { const spyFn = vitest_1.vi.spyOn(chanceRatioMapGeneratorAny, methodName); chanceRatioMapGenerator['calcChanceRatio']([], mockChanceRatioMap); (0, vitest_1.expect)(spyFn).toHaveBeenCalled(); }); }); }); (0, vitest_1.describe)('getActualChanceRatioMap', () => { (0, vitest_1.it)('должен вернуть Map с актуальными ключами и значениями процентов', () => { const expected = new Map([ [movement_enums_1.ExtendedMovementCharacter.UNKNOWN, 8], [movement_enums_1.ExtendedMovementCharacter.TURN, 9], [movement_enums_1.ExtendedMovementCharacter.DIFFICULT, 50], [movement_enums_1.ExtendedMovementCharacter.STEP, 8], ]); const result = chanceRatioMapGenerator['getActualChanceRatioMap'](Array.from(mockGroupMovementCounted.keys()), mockChanceRatioMap); (0, vitest_1.expect)(result).toStrictEqual(expected); }); }); (0, vitest_1.describe)('separatePercentByType', () => { (0, vitest_1.it)('должен вернуть количество используемых и неиспользуемых процентов', () => { const mockMap = new Map([ [movement_enums_1.ExtendedMovementCharacter.UNKNOWN, 8], [movement_enums_1.ExtendedMovementCharacter.TURN, 9], [movement_enums_1.ExtendedMovementCharacter.DIFFICULT, 50], [movement_enums_1.ExtendedMovementCharacter.STEP, 8], ]); const expected = { unusedPercent: 25, usedPercent: 25 }; const result = chanceRatioMapGenerator['separatePercentByType'](mockMap); (0, vitest_1.expect)(result).toStrictEqual(expected); }); }); (0, vitest_1.describe)('redistributeChanceRatio', () => { (0, vitest_1.it)('должен вернуть Map с обновленными значениями процентов ', () => { const mockPercentageSeparate = { unusedPercent: 25, usedPercent: 25 }; const mockMap = new Map([ [movement_enums_1.ExtendedMovementCharacter.UNKNOWN, 8], [movement_enums_1.ExtendedMovementCharacter.TURN, 9], [movement_enums_1.ExtendedMovementCharacter.DIFFICULT, 50], [movement_enums_1.ExtendedMovementCharacter.STEP, 8], ]); const expected = new Map([ [movement_enums_1.ExtendedMovementCharacter.UNKNOWN, 16], [movement_enums_1.ExtendedMovementCharacter.TURN, 18], [movement_enums_1.ExtendedMovementCharacter.DIFFICULT, 50], [movement_enums_1.ExtendedMovementCharacter.STEP, 16], ]); const result = chanceRatioMapGenerator['redistributeChanceRatio'](mockPercentageSeparate, mockMap); (0, vitest_1.expect)(result).toStrictEqual(expected); }); }); });