|
@@ -1,4 +1,5 @@
|
|
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
|
+import { expect } from '@jest/globals';
|
|
|
import {
|
|
|
TimelineSelectionMode,
|
|
|
TimelineKeyframe,
|
|
@@ -13,7 +14,7 @@ import {
|
|
|
TimelineKeyframeStyle,
|
|
|
TimelineUtils,
|
|
|
TimelineKeyframeShape,
|
|
|
-} from '../lib/animation-timeline';
|
|
|
+} from '../src/animation-timeline';
|
|
|
|
|
|
describe('Timeline', () => {
|
|
|
describe('_findDraggableElement', () => {
|
|
@@ -34,7 +35,8 @@ describe('Timeline', () => {
|
|
|
throw new Error('element cannot be empty');
|
|
|
}
|
|
|
|
|
|
- chai.expect(element.type).equal(TimelineElementType.Keyframe, TimelineElementType.Keyframe + ' should be selected');
|
|
|
+ console.log(TimelineElementType.Keyframe + ' should be selected');
|
|
|
+ expect(element.type).toBe(TimelineElementType.Keyframe);
|
|
|
});
|
|
|
it('Timeline should be selected', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -52,7 +54,8 @@ describe('Timeline', () => {
|
|
|
if (!element) {
|
|
|
throw new Error('element cannot be empty');
|
|
|
}
|
|
|
- chai.expect(element.type).equal(TimelineElementType.Timeline, TimelineElementType.Timeline + ' should be selected');
|
|
|
+ console.log(TimelineElementType.Timeline + ' should be selected');
|
|
|
+ expect(element.type).toBe(TimelineElementType.Timeline);
|
|
|
});
|
|
|
it('Timeline should taken first', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -78,9 +81,11 @@ describe('Timeline', () => {
|
|
|
if (!element) {
|
|
|
throw new Error('element cannot be empty');
|
|
|
}
|
|
|
- chai.expect(element.type).equal(TimelineElementType.Timeline, TimelineElementType.Timeline + ' should be selected');
|
|
|
+
|
|
|
+ console.log(TimelineElementType.Timeline + ' should be selected');
|
|
|
+ expect(element.type).toBe(TimelineElementType.Timeline);
|
|
|
// Keyframe with value 5 should be selected
|
|
|
- chai.expect(element.val).equal(5);
|
|
|
+ expect(element.val).toBe(5);
|
|
|
});
|
|
|
|
|
|
it('Group should be found under the value', () => {
|
|
@@ -95,7 +100,8 @@ describe('Timeline', () => {
|
|
|
if (!element) {
|
|
|
throw new Error('element cannot be empty');
|
|
|
}
|
|
|
- chai.expect(element.type).equal(TimelineElementType.Group, TimelineElementType.Group + ' should be selected');
|
|
|
+ console.log(TimelineElementType.Group + ' should be selected');
|
|
|
+ expect(element.type).toBe(TimelineElementType.Group);
|
|
|
});
|
|
|
it('closest keyframe should be returned', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -114,8 +120,8 @@ describe('Timeline', () => {
|
|
|
} as TimelineElement,
|
|
|
];
|
|
|
const element = timeline._findDraggableElement(elements, 5);
|
|
|
- chai.assert(element);
|
|
|
- chai.expect(element.val).equal(elements[1].val);
|
|
|
+ expect(element).toBeTruthy();
|
|
|
+ expect(element?.val).toBe(elements[1].val);
|
|
|
});
|
|
|
it('Keyframes are not draggable by global settings', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -143,8 +149,9 @@ describe('Timeline', () => {
|
|
|
} as TimelineRowStyle,
|
|
|
} as TimelineOptions;
|
|
|
const element = timeline._findDraggableElement(elements, 5);
|
|
|
- chai.assert(element);
|
|
|
- chai.expect(element.type).equal(TimelineElementType.Group, 'Group should be selected');
|
|
|
+ expect(element);
|
|
|
+ console.log('Group should be selected');
|
|
|
+ expect(element?.type).toBe(TimelineElementType.Group);
|
|
|
});
|
|
|
it('Timeline. Keyframes are not draggable by row settings', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -166,9 +173,9 @@ describe('Timeline', () => {
|
|
|
];
|
|
|
// Apply global options::
|
|
|
const element = timeline._findDraggableElement(elements, 4);
|
|
|
- chai.assert(element);
|
|
|
+ expect(element);
|
|
|
// Keyframe with value 5 should be selected as draggable
|
|
|
- chai.expect(element.val).equal(5);
|
|
|
+ expect(element?.val).toBe(5);
|
|
|
});
|
|
|
|
|
|
it('Keyframes are draggable', () => {
|
|
@@ -202,9 +209,9 @@ describe('Timeline', () => {
|
|
|
];
|
|
|
// Apply global options::
|
|
|
const element = timeline._findDraggableElement(elements, 4);
|
|
|
- chai.assert(element);
|
|
|
+ expect(element);
|
|
|
// Keyframe with value 5 should be selected as draggable
|
|
|
- chai.expect(element.val).equal(5);
|
|
|
+ expect(element?.val).toBe(5);
|
|
|
});
|
|
|
});
|
|
|
describe('select', () => {
|
|
@@ -220,20 +227,20 @@ describe('Timeline', () => {
|
|
|
const timeline = new Timeline();
|
|
|
timeline._model = model;
|
|
|
const element = timeline.selectAllKeyframes();
|
|
|
- chai.expect(element.selectionChanged).equal(true);
|
|
|
+ expect(element.selectionChanged).toBe(true);
|
|
|
let changed = 0;
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
const len = row?.keyframes?.length || 0;
|
|
|
- chai.expect(len > 0).equal(true);
|
|
|
+ expect(len > 0).toBe(true);
|
|
|
if (row && row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
- chai.expect(keyframe.selected).equal(true);
|
|
|
+ expect(keyframe.selected).toBe(true);
|
|
|
changed++;
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- chai.expect(element.selected.length).equal(changed);
|
|
|
+ expect(element.selected.length).toBe(changed);
|
|
|
});
|
|
|
it('Select all selectable', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -244,7 +251,7 @@ describe('Timeline', () => {
|
|
|
let selectable = 0;
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
const len = row?.keyframes?.length || 0;
|
|
|
- chai.expect(len > 0).equal(true);
|
|
|
+ expect(len > 0).toBe(true);
|
|
|
if (row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
keyframe.selected = false;
|
|
@@ -257,15 +264,15 @@ describe('Timeline', () => {
|
|
|
}
|
|
|
});
|
|
|
const selectionResults = timeline.select(element);
|
|
|
- chai.expect(selectionResults.changed.length).equal(selectable);
|
|
|
- chai.expect(selectionResults.selected.length).equal(selectable);
|
|
|
+ expect(selectionResults.changed.length).toBe(selectable);
|
|
|
+ expect(selectionResults.selected.length).toBe(selectable);
|
|
|
});
|
|
|
it('Deselect all', () => {
|
|
|
const timeline = new Timeline();
|
|
|
timeline._model = model;
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
const len = row?.keyframes?.length || 0;
|
|
|
- chai.expect(len > 0).equal(true);
|
|
|
+ expect(len > 0).toBe(true);
|
|
|
if (row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
keyframe.selectable = true;
|
|
@@ -275,14 +282,14 @@ describe('Timeline', () => {
|
|
|
});
|
|
|
// deselect all
|
|
|
const element = timeline.deselectAll();
|
|
|
- chai.expect(element.selectionChanged).equal(true);
|
|
|
- chai.expect(element.selected.length).equal(0);
|
|
|
+ expect(element.selectionChanged).toBe(true);
|
|
|
+ expect(element.selected.length).toBe(0);
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
const len = row?.keyframes?.length || 0;
|
|
|
- chai.expect(len > 0).equal(true);
|
|
|
+ expect(len > 0).toBe(true);
|
|
|
if (row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
- chai.expect(keyframe.selected).equal(false);
|
|
|
+ expect(keyframe.selected).toBe(false);
|
|
|
});
|
|
|
}
|
|
|
});
|
|
@@ -294,7 +301,7 @@ describe('Timeline', () => {
|
|
|
// Select all
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
const len = row?.keyframes?.length || 0;
|
|
|
- chai.expect(len > 0).equal(true);
|
|
|
+ expect(len > 0).toBe(true);
|
|
|
if (row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
keyframe.selectable = true;
|
|
@@ -306,26 +313,26 @@ describe('Timeline', () => {
|
|
|
|
|
|
// select one will deselect other
|
|
|
const rowToSelect = model.rows[1];
|
|
|
- chai.expect(!!rowToSelect.keyframes).equal(true);
|
|
|
+ expect(!!rowToSelect.keyframes).toBe(true);
|
|
|
if (!rowToSelect.keyframes) {
|
|
|
return;
|
|
|
}
|
|
|
// toggle selection
|
|
|
const toSelect = rowToSelect.keyframes[0];
|
|
|
const element = timeline.select(toSelect);
|
|
|
- chai.expect(element.selectionChanged).equal(true);
|
|
|
- chai.expect(element.selected.length).equal(1);
|
|
|
- chai.expect(element.changed.length).equal(expectedChanged - 1);
|
|
|
+ expect(element.selectionChanged).toBe(true);
|
|
|
+ expect(element.selected.length).toBe(1);
|
|
|
+ expect(element.changed.length).toBe(expectedChanged - 1);
|
|
|
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
const len = row?.keyframes?.length || 0;
|
|
|
- chai.expect(len > 0).equal(true);
|
|
|
+ expect(len > 0).toBe(true);
|
|
|
if (row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
if (toSelect == keyframe) {
|
|
|
- chai.expect(keyframe.selected).equal(true);
|
|
|
+ expect(keyframe.selected).toBe(true);
|
|
|
} else {
|
|
|
- chai.expect(keyframe.selected).equal(false);
|
|
|
+ expect(keyframe.selected).toBe(false);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -338,7 +345,7 @@ describe('Timeline', () => {
|
|
|
// Select all
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
const len = row?.keyframes?.length || 0;
|
|
|
- chai.expect(len > 0).equal(true);
|
|
|
+ expect(len > 0).toBe(true);
|
|
|
if (row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
keyframe.selectable = true;
|
|
@@ -349,7 +356,7 @@ describe('Timeline', () => {
|
|
|
});
|
|
|
|
|
|
const rowToSelect = model.rows[1];
|
|
|
- chai.expect(!!rowToSelect.keyframes).equal(true);
|
|
|
+ expect(!!rowToSelect.keyframes).toBe(true);
|
|
|
if (!rowToSelect.keyframes) {
|
|
|
return;
|
|
|
}
|
|
@@ -358,18 +365,18 @@ describe('Timeline', () => {
|
|
|
|
|
|
// item is selected, should be reverted
|
|
|
const element = timeline.select(toSelect, TimelineSelectionMode.Revert);
|
|
|
- chai.expect(element.selectionChanged).equal(true);
|
|
|
- chai.expect(element.selected.length).equal(totalKeyframes - 1);
|
|
|
- chai.expect(element.changed.length).equal(1);
|
|
|
+ expect(element.selectionChanged).toBe(true);
|
|
|
+ expect(element.selected.length).toBe(totalKeyframes - 1);
|
|
|
+ expect(element.changed.length).toBe(1);
|
|
|
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
- chai.expect((row.keyframes?.length || 0) > 0).equal(true);
|
|
|
+ expect((row.keyframes?.length || 0) > 0).toBe(true);
|
|
|
if (row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
if (toSelect == keyframe) {
|
|
|
- chai.expect(keyframe.selected).equal(false);
|
|
|
+ expect(keyframe.selected).toBe(false);
|
|
|
} else {
|
|
|
- chai.expect(keyframe.selected).equal(true);
|
|
|
+ expect(keyframe.selected).toBe(true);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -381,7 +388,7 @@ describe('Timeline', () => {
|
|
|
// Deselect all
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
const len = row?.keyframes?.length || 0;
|
|
|
- chai.expect(len > 0).equal(true);
|
|
|
+ expect(len > 0).toBe(true);
|
|
|
if (row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
keyframe.selectable = true;
|
|
@@ -392,30 +399,30 @@ describe('Timeline', () => {
|
|
|
|
|
|
// select one will deselect other
|
|
|
const rowToSelect = model.rows[1];
|
|
|
- chai.expect(!!rowToSelect.keyframes).equal(true);
|
|
|
+ expect(!!rowToSelect.keyframes).toBe(true);
|
|
|
if (!rowToSelect.keyframes) {
|
|
|
return;
|
|
|
}
|
|
|
const element = timeline.select(rowToSelect.keyframes);
|
|
|
- chai.expect(element.selectionChanged).equal(true);
|
|
|
- chai.expect(element.selected.length).equal(rowToSelect.keyframes.length);
|
|
|
- chai.expect(element.changed.length).equal(3);
|
|
|
+ expect(element.selectionChanged).toBe(true);
|
|
|
+ expect(element.selected.length).toBe(rowToSelect.keyframes.length);
|
|
|
+ expect(element.changed.length).toBe(3);
|
|
|
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
if (rowToSelect === row) {
|
|
|
const len = row?.keyframes?.length || 0;
|
|
|
- chai.expect(len > 0).equal(true);
|
|
|
+ expect(len > 0).toBe(true);
|
|
|
if (rowToSelect.keyframes) {
|
|
|
rowToSelect.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
- chai.expect(keyframe.selected).equal(true);
|
|
|
+ expect(keyframe.selected).toBe(true);
|
|
|
});
|
|
|
}
|
|
|
} else {
|
|
|
const len = row?.keyframes?.length || 0;
|
|
|
- chai.expect(len > 0).equal(true);
|
|
|
+ expect(len > 0).toBe(true);
|
|
|
if (row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
- chai.expect(keyframe.selected).equal(false);
|
|
|
+ expect(keyframe.selected).toBe(false);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
@@ -427,7 +434,7 @@ describe('Timeline', () => {
|
|
|
// Deselect all
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
const len = row?.keyframes?.length || 0;
|
|
|
- chai.expect(len > 0).equal(true);
|
|
|
+ expect(len > 0).toBe(true);
|
|
|
if (row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
keyframe.selected = false;
|
|
@@ -437,35 +444,35 @@ describe('Timeline', () => {
|
|
|
|
|
|
// select one row (array of the keyframes)
|
|
|
const rowToSelect = model.rows[1];
|
|
|
- chai.expect(!!rowToSelect.keyframes).equal(true);
|
|
|
+ expect(!!rowToSelect.keyframes).toBe(true);
|
|
|
if (!rowToSelect.keyframes) {
|
|
|
return;
|
|
|
}
|
|
|
let results = timeline.select(rowToSelect.keyframes);
|
|
|
- chai.expect(results.selectionChanged).equal(true);
|
|
|
- chai.expect(results.selected.length).equal(rowToSelect.keyframes?.length);
|
|
|
- chai.expect(results.changed.length).equal(rowToSelect.keyframes?.length);
|
|
|
+ expect(results.selectionChanged).toBe(true);
|
|
|
+ expect(results.selected.length).toBe(rowToSelect.keyframes?.length);
|
|
|
+ expect(results.changed.length).toBe(rowToSelect.keyframes?.length);
|
|
|
|
|
|
// (array of the keyframes)
|
|
|
const rowToSelect2 = model.rows[2];
|
|
|
results = timeline.select(rowToSelect2?.keyframes || [], TimelineSelectionMode.Append);
|
|
|
- chai.expect(results.selectionChanged).equal(true);
|
|
|
- chai.expect(results.selected.length).equal((rowToSelect?.keyframes?.length || 0) + (rowToSelect2?.keyframes?.length || 0));
|
|
|
- chai.expect(results.changed.length).equal(rowToSelect2?.keyframes?.length);
|
|
|
+ expect(results.selectionChanged).toBe(true);
|
|
|
+ expect(results.selected.length).toBe((rowToSelect?.keyframes?.length || 0) + (rowToSelect2?.keyframes?.length || 0));
|
|
|
+ expect(results.changed.length).toBe(rowToSelect2?.keyframes?.length);
|
|
|
|
|
|
model.rows.forEach((row: TimelineRow) => {
|
|
|
if (rowToSelect === row || rowToSelect2 === row) {
|
|
|
- chai.expect((rowToSelect.keyframes?.length || 0) > 0).equal(true);
|
|
|
+ expect((rowToSelect.keyframes?.length || 0) > 0).toBe(true);
|
|
|
if (rowToSelect.keyframes) {
|
|
|
rowToSelect.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
- chai.expect(keyframe.selected).equal(true);
|
|
|
+ expect(keyframe.selected).toBe(true);
|
|
|
});
|
|
|
}
|
|
|
} else {
|
|
|
- chai.expect((row.keyframes?.length || 0) > 0).equal(true);
|
|
|
+ expect((row.keyframes?.length || 0) > 0).toBe(true);
|
|
|
if (row.keyframes) {
|
|
|
row.keyframes.forEach((keyframe: TimelineKeyframe) => {
|
|
|
- chai.expect(keyframe.selected).equal(false);
|
|
|
+ expect(keyframe.selected).toBe(false);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
@@ -481,13 +488,13 @@ describe('Timeline', () => {
|
|
|
zoom: 1,
|
|
|
} as TimelineOptions);
|
|
|
|
|
|
- chai.expect(timeline.valToPx(0)).equal(0);
|
|
|
- chai.expect(timeline.valToPx(100)).equal(50);
|
|
|
- chai.expect(timeline.valToPx(200)).equal(100);
|
|
|
+ expect(timeline.valToPx(0)).toBe(0);
|
|
|
+ expect(timeline.valToPx(100)).toBe(50);
|
|
|
+ expect(timeline.valToPx(200)).toBe(100);
|
|
|
|
|
|
- chai.expect(timeline.pxToVal(0)).equal(0);
|
|
|
- chai.expect(timeline.pxToVal(50)).equal(100);
|
|
|
- chai.expect(timeline.pxToVal(100)).equal(200);
|
|
|
+ expect(timeline.pxToVal(0)).toBe(0);
|
|
|
+ expect(timeline.pxToVal(50)).toBe(100);
|
|
|
+ expect(timeline.pxToVal(100)).toBe(200);
|
|
|
});
|
|
|
it('Coordinates. min is negative', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -498,17 +505,17 @@ describe('Timeline', () => {
|
|
|
zoom: 1,
|
|
|
} as TimelineOptions);
|
|
|
|
|
|
- chai.expect(timeline.valToPx(-100)).equal(0);
|
|
|
- chai.expect(timeline.valToPx(-50)).equal(25);
|
|
|
- chai.expect(timeline.valToPx(0)).equal(50);
|
|
|
- chai.expect(timeline.valToPx(50)).equal(75);
|
|
|
- chai.expect(timeline.valToPx(100)).equal(100);
|
|
|
+ expect(timeline.valToPx(-100)).toBe(0);
|
|
|
+ expect(timeline.valToPx(-50)).toBe(25);
|
|
|
+ expect(timeline.valToPx(0)).toBe(50);
|
|
|
+ expect(timeline.valToPx(50)).toBe(75);
|
|
|
+ expect(timeline.valToPx(100)).toBe(100);
|
|
|
|
|
|
- chai.expect(timeline.pxToVal(0)).equal(-100);
|
|
|
- chai.expect(timeline.pxToVal(25)).equal(-50);
|
|
|
- chai.expect(timeline.pxToVal(50)).equal(0);
|
|
|
- chai.expect(timeline.pxToVal(75)).equal(50);
|
|
|
- chai.expect(timeline.pxToVal(100)).equal(100);
|
|
|
+ expect(timeline.pxToVal(0)).toBe(-100);
|
|
|
+ expect(timeline.pxToVal(25)).toBe(-50);
|
|
|
+ expect(timeline.pxToVal(50)).toBe(0);
|
|
|
+ expect(timeline.pxToVal(75)).toBe(50);
|
|
|
+ expect(timeline.pxToVal(100)).toBe(100);
|
|
|
});
|
|
|
it('Coordinates. min is positive', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -519,11 +526,11 @@ describe('Timeline', () => {
|
|
|
zoom: 1,
|
|
|
} as TimelineOptions);
|
|
|
|
|
|
- chai.expect(timeline.valToPx(100)).equal(0);
|
|
|
- chai.expect(timeline.valToPx(150)).equal(25);
|
|
|
+ expect(timeline.valToPx(100)).toBe(0);
|
|
|
+ expect(timeline.valToPx(150)).toBe(25);
|
|
|
|
|
|
- chai.expect(timeline.pxToVal(0)).equal(100);
|
|
|
- chai.expect(timeline.pxToVal(25)).equal(150);
|
|
|
+ expect(timeline.pxToVal(0)).toBe(100);
|
|
|
+ expect(timeline.pxToVal(25)).toBe(150);
|
|
|
});
|
|
|
it('Zoom is respected', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -533,17 +540,17 @@ describe('Timeline', () => {
|
|
|
zoom: 1,
|
|
|
} as TimelineOptions);
|
|
|
|
|
|
- chai.expect(timeline.valToPx(0)).equal(0);
|
|
|
- chai.expect(timeline.valToPx(100)).equal(50);
|
|
|
- chai.expect(timeline.valToPx(200)).equal(100);
|
|
|
+ expect(timeline.valToPx(0)).toBe(0);
|
|
|
+ expect(timeline.valToPx(100)).toBe(50);
|
|
|
+ expect(timeline.valToPx(200)).toBe(100);
|
|
|
timeline._setZoom(2);
|
|
|
- chai.expect(timeline.valToPx(0)).equal(0);
|
|
|
- chai.expect(timeline.valToPx(100)).equal(25);
|
|
|
- chai.expect(timeline.valToPx(200)).equal(50);
|
|
|
+ expect(timeline.valToPx(0)).toBe(0);
|
|
|
+ expect(timeline.valToPx(100)).toBe(25);
|
|
|
+ expect(timeline.valToPx(200)).toBe(50);
|
|
|
|
|
|
- chai.expect(timeline.pxToVal(0)).equal(0);
|
|
|
- chai.expect(timeline.pxToVal(25)).equal(100);
|
|
|
- chai.expect(timeline.pxToVal(50)).equal(200);
|
|
|
+ expect(timeline.pxToVal(0)).toBe(0);
|
|
|
+ expect(timeline.pxToVal(25)).toBe(100);
|
|
|
+ expect(timeline.pxToVal(50)).toBe(200);
|
|
|
});
|
|
|
});
|
|
|
describe('Snapping', () => {
|
|
@@ -556,11 +563,11 @@ describe('Timeline', () => {
|
|
|
zoom: 1,
|
|
|
} as TimelineOptions);
|
|
|
|
|
|
- chai.expect(timeline.snapVal(0)).equal(0);
|
|
|
- chai.expect(timeline.snapVal(10)).equal(0);
|
|
|
- chai.expect(timeline.snapVal(26)).equal(25);
|
|
|
- chai.expect(timeline.snapVal(48)).equal(50);
|
|
|
- chai.expect(timeline.snapVal(58)).equal(50);
|
|
|
+ expect(timeline.snapVal(0)).toBe(0);
|
|
|
+ expect(timeline.snapVal(10)).toBe(0);
|
|
|
+ expect(timeline.snapVal(26)).toBe(25);
|
|
|
+ expect(timeline.snapVal(48)).toBe(50);
|
|
|
+ expect(timeline.snapVal(58)).toBe(50);
|
|
|
});
|
|
|
it('Snapping. min is defined', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -572,14 +579,14 @@ describe('Timeline', () => {
|
|
|
zoom: 1,
|
|
|
} as TimelineOptions);
|
|
|
|
|
|
- chai.expect(timeline.snapVal(0)).equal(5);
|
|
|
- chai.expect(timeline.snapVal(10)).equal(5);
|
|
|
- chai.expect(timeline.snapVal(26)).equal(30);
|
|
|
- chai.expect(timeline.snapVal(48)).equal(55);
|
|
|
- chai.expect(timeline.snapVal(58)).equal(55);
|
|
|
+ expect(timeline.snapVal(0)).toBe(5);
|
|
|
+ expect(timeline.snapVal(10)).toBe(5);
|
|
|
+ expect(timeline.snapVal(26)).toBe(30);
|
|
|
+ expect(timeline.snapVal(48)).toBe(55);
|
|
|
+ expect(timeline.snapVal(58)).toBe(55);
|
|
|
|
|
|
// Don't overlap the limit.
|
|
|
- chai.expect(timeline.snapVal(-100)).equal(5);
|
|
|
+ expect(timeline.snapVal(-100)).toBe(5);
|
|
|
});
|
|
|
it('Snapping. negative min is defined', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -591,38 +598,38 @@ describe('Timeline', () => {
|
|
|
zoom: 1,
|
|
|
} as TimelineOptions);
|
|
|
|
|
|
- chai.expect(timeline.snapVal(0)).equal(-5);
|
|
|
- chai.expect(timeline.snapVal(10)).equal(-5);
|
|
|
- chai.expect(timeline.snapVal(26)).equal(20);
|
|
|
- chai.expect(timeline.snapVal(48)).equal(45);
|
|
|
- chai.expect(timeline.snapVal(58)).equal(45);
|
|
|
+ expect(timeline.snapVal(0)).toBe(-5);
|
|
|
+ expect(timeline.snapVal(10)).toBe(-5);
|
|
|
+ expect(timeline.snapVal(26)).toBe(20);
|
|
|
+ expect(timeline.snapVal(48)).toBe(45);
|
|
|
+ expect(timeline.snapVal(58)).toBe(45);
|
|
|
|
|
|
- chai.expect(timeline.snapVal(-1)).equal(-5);
|
|
|
- chai.expect(timeline.snapVal(-10)).equal(-5);
|
|
|
- chai.expect(timeline.snapVal(-26)).equal(-30);
|
|
|
- chai.expect(timeline.snapVal(-48)).equal(-55);
|
|
|
- chai.expect(timeline.snapVal(-58)).equal(-55);
|
|
|
+ expect(timeline.snapVal(-1)).toBe(-5);
|
|
|
+ expect(timeline.snapVal(-10)).toBe(-5);
|
|
|
+ expect(timeline.snapVal(-26)).toBe(-30);
|
|
|
+ expect(timeline.snapVal(-48)).toBe(-55);
|
|
|
+ expect(timeline.snapVal(-58)).toBe(-55);
|
|
|
|
|
|
// Don't overlap the limit.
|
|
|
- chai.expect(timeline.snapVal(-100)).equal(-55);
|
|
|
+ expect(timeline.snapVal(-100)).toBe(-55);
|
|
|
});
|
|
|
it('TimelineUtils.isNumber', () => {
|
|
|
- chai.expect(TimelineUtils.isNumber(0)).equal(true);
|
|
|
- chai.expect(TimelineUtils.isNumber(-1)).equal(true);
|
|
|
- chai.expect(TimelineUtils.isNumber(1)).equal(true);
|
|
|
- chai.expect(TimelineUtils.isNumber(null)).equal(false);
|
|
|
- chai.expect(TimelineUtils.isNumber(undefined)).equal(false);
|
|
|
- chai.expect(TimelineUtils.isNumber(Number.NEGATIVE_INFINITY)).equal(false);
|
|
|
- chai.expect(TimelineUtils.isNumber(Number.NaN)).equal(false);
|
|
|
+ expect(TimelineUtils.isNumber(0)).toBe(true);
|
|
|
+ expect(TimelineUtils.isNumber(-1)).toBe(true);
|
|
|
+ expect(TimelineUtils.isNumber(1)).toBe(true);
|
|
|
+ expect(TimelineUtils.isNumber(null)).toBe(false);
|
|
|
+ expect(TimelineUtils.isNumber(undefined)).toBe(false);
|
|
|
+ expect(TimelineUtils.isNumber(Number.NEGATIVE_INFINITY)).toBe(false);
|
|
|
+ expect(TimelineUtils.isNumber(Number.NaN)).toBe(false);
|
|
|
});
|
|
|
it('TimelineUtils.keepInBounds', () => {
|
|
|
- chai.expect(TimelineUtils.keepInBounds(0, -1, 2)).equal(0);
|
|
|
- chai.expect(TimelineUtils.keepInBounds(0, 1, 2)).equal(1);
|
|
|
- chai.expect(TimelineUtils.keepInBounds(0, 1, null)).equal(1);
|
|
|
- chai.expect(TimelineUtils.keepInBounds(10, null, 2)).equal(2);
|
|
|
- chai.expect(TimelineUtils.keepInBounds(-10, -1, 2)).equal(-1);
|
|
|
- chai.expect(TimelineUtils.keepInBounds(-10, 2, 2)).equal(2);
|
|
|
- chai.expect(TimelineUtils.keepInBounds(10, 1, 2)).equal(2);
|
|
|
+ expect(TimelineUtils.keepInBounds(0, -1, 2)).toBe(0);
|
|
|
+ expect(TimelineUtils.keepInBounds(0, 1, 2)).toBe(1);
|
|
|
+ expect(TimelineUtils.keepInBounds(0, 1, null)).toBe(1);
|
|
|
+ expect(TimelineUtils.keepInBounds(10, null, 2)).toBe(2);
|
|
|
+ expect(TimelineUtils.keepInBounds(-10, -1, 2)).toBe(-1);
|
|
|
+ expect(TimelineUtils.keepInBounds(-10, 2, 2)).toBe(2);
|
|
|
+ expect(TimelineUtils.keepInBounds(10, 1, 2)).toBe(2);
|
|
|
});
|
|
|
it('TimelineUtils.cutBounds', () => {
|
|
|
const cutInformation = new Timeline()._cutBoundsWhenOverlap(
|
|
@@ -644,13 +651,13 @@ describe('Timeline', () => {
|
|
|
10,
|
|
|
50,
|
|
|
);
|
|
|
- chai.assert(cutInformation);
|
|
|
- const rect = cutInformation.rect;
|
|
|
- chai.assert(rect);
|
|
|
- chai.expect(rect.x).equal(10);
|
|
|
- chai.expect(rect.y).equal(10);
|
|
|
- chai.expect(rect.width).equal(90);
|
|
|
- chai.expect(rect.height).equal(90);
|
|
|
+ expect(cutInformation);
|
|
|
+ const rect = cutInformation?.rect;
|
|
|
+ expect(rect);
|
|
|
+ expect(rect?.x).toBe(10);
|
|
|
+ expect(rect?.y).toBe(10);
|
|
|
+ expect(rect?.width).toBe(90);
|
|
|
+ expect(rect?.height).toBe(90);
|
|
|
});
|
|
|
|
|
|
it('Snapping. negative min (-25) is defined', () => {
|
|
@@ -663,12 +670,12 @@ describe('Timeline', () => {
|
|
|
zoom: 1,
|
|
|
} as TimelineOptions);
|
|
|
|
|
|
- chai.expect(timeline.snapVal(-1)).equal(0);
|
|
|
- chai.expect(timeline.snapVal(-10)).equal(0);
|
|
|
- chai.expect(timeline.snapVal(10)).equal(0);
|
|
|
- chai.expect(timeline.snapVal(26)).equal(25);
|
|
|
- chai.expect(timeline.snapVal(50)).equal(50);
|
|
|
- chai.expect(timeline.snapVal(-58)).equal(-25);
|
|
|
+ expect(timeline.snapVal(-1) === 0).toBeTruthy();
|
|
|
+ expect(timeline.snapVal(-10) === 0).toBeTruthy();
|
|
|
+ expect(timeline.snapVal(10) === 0).toBeTruthy();
|
|
|
+ expect(timeline.snapVal(26)).toBe(25);
|
|
|
+ expect(timeline.snapVal(50)).toBe(50);
|
|
|
+ expect(timeline.snapVal(-58)).toBe(-25);
|
|
|
});
|
|
|
});
|
|
|
describe('Move Keyframes', () => {
|
|
@@ -683,12 +690,12 @@ describe('Timeline', () => {
|
|
|
timeline._model = model;
|
|
|
const move = -50;
|
|
|
const row = model.rows[0];
|
|
|
- chai.expect(!!row).equal(true);
|
|
|
+ expect(!!row).toBe(true);
|
|
|
if (!row) {
|
|
|
return;
|
|
|
}
|
|
|
const keyframes = row.keyframes;
|
|
|
- chai.expect(!!keyframes).equal(true);
|
|
|
+ expect(!!keyframes).toBe(true);
|
|
|
if (!keyframes) {
|
|
|
return;
|
|
|
}
|
|
@@ -703,9 +710,9 @@ describe('Timeline', () => {
|
|
|
} as TimelineElementDragState,
|
|
|
]);
|
|
|
|
|
|
- chai.expect(movedOffset).equal(move);
|
|
|
- chai.expect(keyframes[0]?.val).equal(item1 + move);
|
|
|
- chai.expect(keyframes[1]?.val).equal(item2 + move);
|
|
|
+ expect(movedOffset).toBe(move);
|
|
|
+ expect(keyframes[0]?.val).toBe(item1 + move);
|
|
|
+ expect(keyframes[1]?.val).toBe(item2 + move);
|
|
|
});
|
|
|
it('move right', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -718,12 +725,12 @@ describe('Timeline', () => {
|
|
|
timeline._model = model;
|
|
|
const move = 100;
|
|
|
const row = model.rows[0];
|
|
|
- chai.expect(!!row).equal(true);
|
|
|
+ expect(!!row).toBe(true);
|
|
|
if (!row) {
|
|
|
return;
|
|
|
}
|
|
|
const keyframes = row.keyframes;
|
|
|
- chai.expect(!!keyframes).equal(true);
|
|
|
+ expect(!!keyframes).toBe(true);
|
|
|
if (!keyframes) {
|
|
|
return;
|
|
|
}
|
|
@@ -738,9 +745,9 @@ describe('Timeline', () => {
|
|
|
} as TimelineElementDragState,
|
|
|
]);
|
|
|
|
|
|
- chai.expect(movedOffset).equal(move);
|
|
|
- chai.expect(keyframes[0]?.val).equal(item1 + move);
|
|
|
- chai.expect(keyframes[1]?.val).equal(item2 + move);
|
|
|
+ expect(movedOffset).toBe(move);
|
|
|
+ expect(keyframes[0]?.val).toBe(item1 + move);
|
|
|
+ expect(keyframes[1]?.val).toBe(item2 + move);
|
|
|
});
|
|
|
it('move left limited by min', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -758,9 +765,9 @@ describe('Timeline', () => {
|
|
|
];
|
|
|
const movedOffset = timeline._moveElements(move, elementsToMove);
|
|
|
|
|
|
- chai.expect(movedOffset).equal(move / 2);
|
|
|
- chai.expect(elementsToMove[0].keyframe?.val).equal(0);
|
|
|
- chai.expect(elementsToMove[1].keyframe?.val).equal(25);
|
|
|
+ expect(movedOffset).toBe(move / 2);
|
|
|
+ expect(elementsToMove[0].keyframe?.val).toBe(0);
|
|
|
+ expect(elementsToMove[1].keyframe?.val).toBe(25);
|
|
|
});
|
|
|
|
|
|
it('move right limited by max', () => {
|
|
@@ -779,9 +786,9 @@ describe('Timeline', () => {
|
|
|
];
|
|
|
const movedOffset = timeline._moveElements(move, elementsToMove);
|
|
|
|
|
|
- chai.expect(movedOffset).equal(move / 2);
|
|
|
- chai.expect(elementsToMove[0].keyframe?.val).equal(item1 + 50);
|
|
|
- chai.expect(elementsToMove[1].keyframe?.val).equal(item2 + 50);
|
|
|
+ expect(movedOffset).toBe(move / 2);
|
|
|
+ expect(elementsToMove[0].keyframe?.val).toBe(item1 + 50);
|
|
|
+ expect(elementsToMove[1].keyframe?.val).toBe(item2 + 50);
|
|
|
});
|
|
|
it('move right limited by max negative', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -799,9 +806,9 @@ describe('Timeline', () => {
|
|
|
];
|
|
|
const movedOffset = timeline._moveElements(move, elementsToMove);
|
|
|
|
|
|
- chai.expect(movedOffset).equal(25);
|
|
|
- chai.expect(elementsToMove[0].keyframe?.val).equal(item1 + 25);
|
|
|
- chai.expect(elementsToMove[1].keyframe?.val).equal(item2 + 25);
|
|
|
+ expect(movedOffset).toBe(25);
|
|
|
+ expect(elementsToMove[0].keyframe?.val).toBe(item1 + 25);
|
|
|
+ expect(elementsToMove[1].keyframe?.val).toBe(item2 + 25);
|
|
|
});
|
|
|
it('move right limited by max negative when other row out of the bounds', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -829,11 +836,11 @@ describe('Timeline', () => {
|
|
|
];
|
|
|
const movedOffset = timeline._moveElements(move, elementsToMove);
|
|
|
const moved = move / 2;
|
|
|
- chai.expect(movedOffset).equal(moved);
|
|
|
- chai.expect(elementsToMove[0].keyframe?.val).equal(100 + moved);
|
|
|
- chai.expect(elementsToMove[1].keyframe?.val).equal(400 + moved);
|
|
|
- chai.expect(elementsToMove[2].keyframe?.val).equal(200 + moved);
|
|
|
- chai.expect(elementsToMove[3].keyframe?.val).equal(300 + moved);
|
|
|
+ expect(movedOffset).toBe(moved);
|
|
|
+ expect(elementsToMove[0].keyframe?.val).toBe(100 + moved);
|
|
|
+ expect(elementsToMove[1].keyframe?.val).toBe(400 + moved);
|
|
|
+ expect(elementsToMove[2].keyframe?.val).toBe(200 + moved);
|
|
|
+ expect(elementsToMove[3].keyframe?.val).toBe(300 + moved);
|
|
|
});
|
|
|
it('move left limited by min negative', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -851,9 +858,9 @@ describe('Timeline', () => {
|
|
|
];
|
|
|
const movedOffset = timeline._moveElements(move, elementsToMove);
|
|
|
|
|
|
- chai.expect(movedOffset).equal(move / 2);
|
|
|
- chai.expect(elementsToMove[0].keyframe?.val).equal(item1 - 50);
|
|
|
- chai.expect(elementsToMove[1].keyframe?.val).equal(item2 - 50);
|
|
|
+ expect(movedOffset).toBe(move / 2);
|
|
|
+ expect(elementsToMove[0].keyframe?.val).toBe(item1 - 50);
|
|
|
+ expect(elementsToMove[1].keyframe?.val).toBe(item2 - 50);
|
|
|
});
|
|
|
it('move left only one keyframe is limited', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -871,9 +878,9 @@ describe('Timeline', () => {
|
|
|
];
|
|
|
const movedOffset = timeline._moveElements(move, elementsToMove);
|
|
|
|
|
|
- chai.expect(movedOffset).equal(move / 2);
|
|
|
- chai.expect(elementsToMove[0].keyframe?.val).equal(25 + 50);
|
|
|
- chai.expect(elementsToMove[1].keyframe?.val).equal(50 + 50);
|
|
|
+ expect(movedOffset).toBe(move / 2);
|
|
|
+ expect(elementsToMove[0].keyframe?.val).toBe(25 + 50);
|
|
|
+ expect(elementsToMove[1].keyframe?.val).toBe(50 + 50);
|
|
|
});
|
|
|
it('move left only one keyframe has min bounds', () => {
|
|
|
const timeline = new Timeline();
|
|
@@ -890,9 +897,9 @@ describe('Timeline', () => {
|
|
|
} as TimelineElementDragState,
|
|
|
];
|
|
|
const movedOffset = timeline._moveElements(move, elementsToMove);
|
|
|
- chai.expect(movedOffset).equal(-20);
|
|
|
- chai.expect(elementsToMove[0].keyframe?.val).equal(5);
|
|
|
- chai.expect(elementsToMove[1].keyframe?.val).equal(30);
|
|
|
+ expect(movedOffset).toBe(-20);
|
|
|
+ expect(elementsToMove[0].keyframe?.val).toBe(5);
|
|
|
+ expect(elementsToMove[1].keyframe?.val).toBe(30);
|
|
|
});
|
|
|
});
|
|
|
});
|