step-sequence-generator
Version:
A step sequence generator for figure skating programs
102 lines (101 loc) • 5.37 kB
JavaScript
;
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);
});
});
});
});