UNPKG

step-sequence-generator

Version:

A step sequence generator for figure skating programs

88 lines (87 loc) 3.77 kB
"use strict"; 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); }); }); });