step-sequence-generator
Version:
A step sequence generator for figure skating programs
88 lines (87 loc) • 3.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const BaseCompositeMovementFilters_1 = require("./BaseCompositeMovementFilters");
const movement_enums_1 = require("../../shared/enums/movement-enums");
const MovementLibrary_1 = require("../movement/MovementLibrary");
const DefaultMovementFilterStrategy_1 = require("./strategies/DefaultMovementFilterStrategy");
const DifficultTurnsFilterStrategy_1 = require("./strategies/DifficultTurnsFilterStrategy");
const StepContext_1 = require("../sequence-generator/StepContext");
const currentMovement = {
isDifficult: true,
type: movement_enums_1.MovementCharacter.TURN,
name: 'currentDifficultTurn',
endEdge: movement_enums_1.Edge.OUTER,
endLeg: movement_enums_1.Leg.RIGHT,
transitionDirection: movement_enums_1.TransitionDirection.BACKWARD,
rotationDegree: movement_enums_1.RotationDegree.DEGREE_180,
};
const mockMovements = [
{
isDifficult: true,
type: movement_enums_1.MovementCharacter.TURN,
name: 'RESULT',
startEdge: movement_enums_1.Edge.OUTER,
startLeg: movement_enums_1.Leg.RIGHT,
transitionDirection: movement_enums_1.TransitionDirection.FORWARD,
},
{
isDifficult: true,
type: movement_enums_1.MovementCharacter.TURN,
name: 'difficultTurn2',
startEdge: movement_enums_1.Edge.INNER,
startLeg: movement_enums_1.Leg.RIGHT,
transitionDirection: 'forward',
},
{
isDifficult: true,
type: movement_enums_1.MovementCharacter.STEP,
name: 'difficultTurn2',
startEdge: movement_enums_1.Edge.OUTER,
startLeg: movement_enums_1.Leg.RIGHT,
transitionDirection: 'forward',
},
{
isDifficult: false,
type: movement_enums_1.MovementCharacter.GLIDE,
name: 'glide',
startEdge: movement_enums_1.Edge.INNER,
startLeg: movement_enums_1.Leg.RIGHT,
transitionDirection: 'forward',
},
];
const mockLibrary = new MovementLibrary_1.MovementLibrary(mockMovements);
const mockStepContext = new StepContext_1.StepContext();
(0, vitest_1.describe)('BaseCompositeMovementFilters', () => {
let compositeFilter;
(0, vitest_1.beforeEach)(() => {
const defaultFilterStrategy = new DefaultMovementFilterStrategy_1.DefaultMovementFilterStrategy();
const difficultTurnsFilterStrategy = new DifficultTurnsFilterStrategy_1.DifficultTurnsFilterStrategy();
compositeFilter = new BaseCompositeMovementFilters_1.BaseCompositeMovementFilters([
defaultFilterStrategy,
difficultTurnsFilterStrategy,
]);
});
(0, vitest_1.describe)('implementation', () => {
(0, vitest_1.it)('должен корректно создаваться', () => {
(0, vitest_1.expect)(compositeFilter).toBeDefined();
});
});
(0, vitest_1.describe)('filter', () => {
(0, vitest_1.it)('должен вернуть корректный movement', () => {
mockStepContext.currentStep = currentMovement;
const expected = new MovementLibrary_1.MovementLibrary([
{
isDifficult: true,
type: movement_enums_1.MovementCharacter.TURN,
name: 'RESULT',
startEdge: movement_enums_1.Edge.OUTER,
startLeg: movement_enums_1.Leg.RIGHT,
transitionDirection: movement_enums_1.TransitionDirection.FORWARD,
},
]);
const result = compositeFilter.filter(mockLibrary, mockStepContext);
(0, vitest_1.expect)(result).toStrictEqual(expected);
});
});
});