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