UNPKG

step-sequence-generator

Version:

A step sequence generator for figure skating programs

102 lines (101 loc) 5.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const movement_enums_1 = require("../../../../shared/enums/movement-enums"); const WeightCalculator_1 = require("../WeightCalculator"); const extractors_1 = require("../extractors"); const mockMovements = [ { type: movement_enums_1.MovementCharacter.UNKNOWN, isDifficult: false }, { type: movement_enums_1.MovementCharacter.UNKNOWN, isDifficult: false }, { type: movement_enums_1.MovementCharacter.UNKNOWN, isDifficult: false }, { type: movement_enums_1.MovementCharacter.TURN, isDifficult: false }, { type: movement_enums_1.MovementCharacter.TURN, isDifficult: true }, { type: movement_enums_1.MovementCharacter.STEP, isDifficult: true }, { type: movement_enums_1.MovementCharacter.STEP, isDifficult: false }, ]; 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], ]); 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], ]); (0, vitest_1.describe)('MovementWeightCalculator', () => { let calc; (0, vitest_1.beforeEach)(() => { calc = new WeightCalculator_1.WeightCalculator(); }); (0, vitest_1.describe)('implementation', () => { (0, vitest_1.it)('должен корректно создаваться', () => { (0, vitest_1.expect)(calc).toBeDefined(); }); }); (0, vitest_1.describe)('public methods', () => { (0, vitest_1.describe)('count', () => { (0, vitest_1.describe)('должен вызывать методы', () => { // eslint-disable-next-line let calcAny; (0, vitest_1.beforeEach)(() => { // eslint-disable-next-line calcAny = calc; }); const methodNameList = ['groupAndCountItems', 'calcWeight']; vitest_1.it.each(methodNameList)('метод %s', (methodName) => { const spyFn = vitest_1.vi.spyOn(calcAny, methodName); calc.count({ selection: mockMovements, chanceRatioMap: mockChanceRatioMap, itemKeyExtractor: extractors_1.movementKeyExtractor, }); (0, vitest_1.expect)(spyFn).toHaveBeenCalled(); }); }); }); }); (0, vitest_1.describe)('private methods', () => { (0, vitest_1.describe)('groupAndCountItems', () => { (0, vitest_1.it)('должен вернуть корректно подсчитанное количество типов движений', () => { const expected = 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], ]); const result = calc['groupAndCountItems'](mockMovements, extractors_1.movementKeyExtractor); (0, vitest_1.expect)(result).toStrictEqual(expected); }); }); (0, vitest_1.describe)('calcWeights', () => { (0, vitest_1.it)('должен вернуть', () => { const mockGroupMovementCounted = new Map([ [movement_enums_1.ExtendedMovementCharacter.UNKNOWN, 3], // 1.17 [movement_enums_1.ExtendedMovementCharacter.TURN, 1], // 1.26 [movement_enums_1.ExtendedMovementCharacter.DIFFICULT, 2], // 3.5 [movement_enums_1.ExtendedMovementCharacter.STEP, 1], // 1.12 ]); const mockRecalculatedMap = 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 expected = new Map([ [movement_enums_1.ExtendedMovementCharacter.UNKNOWN, 0.37], [movement_enums_1.ExtendedMovementCharacter.TURN, 1.26], [movement_enums_1.ExtendedMovementCharacter.DIFFICULT, 1.75], [movement_enums_1.ExtendedMovementCharacter.STEP, 1.12], ]); const result = calc['calcWeights'](mockGroupMovementCounted, mockRecalculatedMap); (0, vitest_1.expect)(result).toStrictEqual(expected); }); }); }); });