step-sequence-generator
Version:
A step sequence generator for figure skating programs
167 lines (166 loc) • 10 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const get_func_result_js_1 = require("../../utils/test-utils/get-func-result.js");
const MovementLibrary_js_1 = require("./MovementLibrary.js");
const movement_enums_js_1 = require("../../shared/enums/movement-enums.js");
(0, vitest_1.describe)('MovementLibrary', () => {
let movementLibrary;
const mockMovements = [
{ name: 'A', startLeg: movement_enums_js_1.Leg.LEFT },
{ name: 'B', startLeg: movement_enums_js_1.Leg.RIGHT },
];
(0, vitest_1.beforeEach)(() => {
movementLibrary = new MovementLibrary_js_1.MovementLibrary(mockMovements);
});
(0, vitest_1.describe)('implementation', () => {
(0, vitest_1.it)('должен корректно создаваться', () => {
(0, vitest_1.expect)(movementLibrary).toBeDefined();
(0, vitest_1.expect)(movementLibrary).toBeInstanceOf(MovementLibrary_js_1.MovementLibrary);
});
});
(0, vitest_1.describe)('create', () => {
(0, vitest_1.it)('должен вернуть имплиментацию MovementLibrary', () => {
const result = movementLibrary.create(mockMovements);
(0, vitest_1.expect)(result).toBeInstanceOf(MovementLibrary_js_1.MovementLibrary);
});
});
(0, vitest_1.describe)('filterBy', () => {
(0, vitest_1.it)('должен вернуть шаг с Leg.LEFT', () => {
const input = (m) => m.startLeg === movement_enums_js_1.Leg.LEFT;
const expected = [{ name: 'A', startLeg: movement_enums_js_1.Leg.LEFT }];
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterBy', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
});
(0, vitest_1.describe)('filterByLeg', () => {
const mockMovements = [
{ name: 'A', startLeg: movement_enums_js_1.Leg.LEFT },
{ name: 'B', startLeg: movement_enums_js_1.Leg.RIGHT },
{ name: 'B', startLeg: movement_enums_js_1.Leg.BOTH },
];
(0, vitest_1.beforeEach)(() => {
movementLibrary = new MovementLibrary_js_1.MovementLibrary(mockMovements);
});
(0, vitest_1.it)('должен вернуть массив с movement с Leg.LEFT и Leg.BOTH', () => {
const input = movement_enums_js_1.Leg.LEFT;
const expected = [
{ name: 'A', startLeg: movement_enums_js_1.Leg.LEFT },
{ name: 'B', startLeg: movement_enums_js_1.Leg.BOTH },
];
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByLeg', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
(0, vitest_1.it)('должен вернуть массив с movement с Leg.RIGHT и Leg.BOTH', () => {
const input = movement_enums_js_1.Leg.RIGHT;
const expected = [
{ name: 'B', startLeg: movement_enums_js_1.Leg.RIGHT },
{ name: 'B', startLeg: movement_enums_js_1.Leg.BOTH },
];
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByLeg', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
(0, vitest_1.it)('должен вернуть массив без фильтрации', () => {
const input = movement_enums_js_1.Leg.BOTH;
const expected = mockMovements;
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByLeg', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
});
(0, vitest_1.describe)('filterByEdge', () => {
const mockMovements = [
{ startEdge: movement_enums_js_1.Edge.INNER },
{ startEdge: movement_enums_js_1.Edge.OUTER },
{ startEdge: movement_enums_js_1.Edge.TWO_EDGES },
];
(0, vitest_1.beforeEach)(() => {
movementLibrary = new MovementLibrary_js_1.MovementLibrary(mockMovements);
});
(0, vitest_1.it)('должен вернуть массив с Edge.INNER и Edge.TWO_EDGES', () => {
const input = movement_enums_js_1.Edge.INNER;
const expected = [{ startEdge: movement_enums_js_1.Edge.INNER }, { startEdge: movement_enums_js_1.Edge.TWO_EDGES }];
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByEdge', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
(0, vitest_1.it)('должен вернуть массив с Edge.INNER и Edge.TWO_EDGES', () => {
const input = movement_enums_js_1.Edge.INNER;
const expected = [{ startEdge: movement_enums_js_1.Edge.INNER }, { startEdge: movement_enums_js_1.Edge.TWO_EDGES }];
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByEdge', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
(0, vitest_1.it)('должен вернуть массив без изменений', () => {
const input = movement_enums_js_1.Edge.TWO_EDGES;
const expected = mockMovements;
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByEdge', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
});
(0, vitest_1.describe)('filterByTransitionDirection', () => {
const mockMovements = [
{ transitionDirection: movement_enums_js_1.TransitionDirection.BACKWARD },
{ transitionDirection: movement_enums_js_1.TransitionDirection.FORWARD },
{ transitionDirection: movement_enums_js_1.TransitionDirection.NONE },
];
(0, vitest_1.beforeEach)(() => {
movementLibrary = new MovementLibrary_js_1.MovementLibrary(mockMovements);
});
(0, vitest_1.it)('должен вернуть массив с TransitionDirection.BACKWARD и TransitionDirection.NONE', () => {
const input = movement_enums_js_1.TransitionDirection.BACKWARD;
const expected = [
{ transitionDirection: movement_enums_js_1.TransitionDirection.BACKWARD },
{ transitionDirection: movement_enums_js_1.TransitionDirection.NONE },
];
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByTransitionDirection', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
(0, vitest_1.it)('должен вернуть массив с TransitionDirection.FORWARD и TransitionDirection.NONE', () => {
const input = movement_enums_js_1.TransitionDirection.FORWARD;
const expected = [
{ transitionDirection: movement_enums_js_1.TransitionDirection.FORWARD },
{ transitionDirection: movement_enums_js_1.TransitionDirection.NONE },
];
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByTransitionDirection', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
(0, vitest_1.it)('должен вернуть массив без изменений', () => {
const input = movement_enums_js_1.TransitionDirection.NONE;
const expected = mockMovements;
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByTransitionDirection', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
});
(0, vitest_1.describe)('filterByRotationDirection', () => {
const mockMovements = [
{ rotationDirection: movement_enums_js_1.RotationDirection.CLOCKWISE },
{ rotationDirection: movement_enums_js_1.RotationDirection.COUNTERCLOCKWISE },
{ rotationDirection: movement_enums_js_1.RotationDirection.NONE },
];
(0, vitest_1.beforeEach)(() => {
movementLibrary = new MovementLibrary_js_1.MovementLibrary(mockMovements);
});
(0, vitest_1.it)('должен вернуть массив с RotationDirection.CLOCKWISE и RotationDirection.NONE', () => {
const input = movement_enums_js_1.RotationDirection.CLOCKWISE;
const expected = [
{ rotationDirection: movement_enums_js_1.RotationDirection.CLOCKWISE },
{ rotationDirection: movement_enums_js_1.RotationDirection.NONE },
];
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByRotationDirection', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
(0, vitest_1.it)('должен вернуть массив с RotationDirection.COUNTERCLOCKWISE и RotationDirection.NONE', () => {
const input = movement_enums_js_1.RotationDirection.COUNTERCLOCKWISE;
const expected = [
{ rotationDirection: movement_enums_js_1.RotationDirection.COUNTERCLOCKWISE },
{ rotationDirection: movement_enums_js_1.RotationDirection.NONE },
];
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByRotationDirection', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
(0, vitest_1.it)('должен вернуть массив без изменений', () => {
const input = movement_enums_js_1.RotationDirection.NONE;
const expected = mockMovements;
const result = (0, get_func_result_js_1.getFuncResult)(movementLibrary, 'filterByRotationDirection', input);
(0, vitest_1.expect)(result.movements).toEqual(expected);
});
});
});