Summary: _typescript_ Reviewed By: priteshrnandgaonkar Differential Revision: D16828814 fbshipit-source-id: 13b86338a73a4838857a31e16ea184e35ebfa7d0
88 lines
2.2 KiB
TypeScript
88 lines
2.2 KiB
TypeScript
/**
|
|
* Copyright 2018-present Facebook.
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
* @format
|
|
*/
|
|
|
|
import MarkerTimeline from '../MarkerTimeline';
|
|
|
|
test('merges points with same timestamp', () => {
|
|
const points = [
|
|
{key: 'marker1', label: 'marker1', time: 41},
|
|
{key: 'marker2', label: 'marker2', time: 41},
|
|
];
|
|
|
|
const {timePoints} = MarkerTimeline.getDerivedStateFromProps({
|
|
lineHeight: 22,
|
|
maxGap: 100,
|
|
points,
|
|
});
|
|
expect(timePoints[0].markerNames).toContain('marker1');
|
|
expect(timePoints[0].markerNames).toContain('marker2');
|
|
});
|
|
|
|
test('sorts points', () => {
|
|
const {timePoints} = MarkerTimeline.getDerivedStateFromProps({
|
|
lineHeight: 22,
|
|
maxGap: 100,
|
|
points: [
|
|
{key: 'marker1', label: 'marker1', time: 20},
|
|
{key: 'marker2', label: 'marker2', time: -50},
|
|
],
|
|
});
|
|
expect(timePoints[0].timestamp).toBe(-50);
|
|
expect(timePoints[1].timestamp).toBe(20);
|
|
});
|
|
|
|
test('handles negative timestamps', () => {
|
|
const points = [{label: 'preStartPoint', key: 'preStartPoint', time: -50}];
|
|
|
|
const {timePoints} = MarkerTimeline.getDerivedStateFromProps({
|
|
lineHeight: 22,
|
|
maxGap: 100,
|
|
points,
|
|
});
|
|
expect(timePoints[0].timestamp).toBe(-50);
|
|
});
|
|
|
|
test('no points', () => {
|
|
const {timePoints} = MarkerTimeline.getDerivedStateFromProps({
|
|
lineHeight: 22,
|
|
maxGap: 100,
|
|
points: [],
|
|
});
|
|
expect(timePoints).toMatchSnapshot();
|
|
});
|
|
|
|
test('handles single point', () => {
|
|
const points = [{key: '1', label: 'single point', time: 0}];
|
|
|
|
const {timePoints} = MarkerTimeline.getDerivedStateFromProps({
|
|
lineHeight: 22,
|
|
maxGap: 100,
|
|
points,
|
|
});
|
|
expect(timePoints).toMatchSnapshot();
|
|
});
|
|
|
|
test('cuts long gaps', () => {
|
|
const points = [
|
|
{key: '1', label: 'single point', time: 1},
|
|
{key: '2', label: 'single point', time: 1000},
|
|
{key: '3', label: 'single point', time: 1001},
|
|
];
|
|
|
|
const MAX_GAP = 100;
|
|
|
|
const {timePoints} = MarkerTimeline.getDerivedStateFromProps({
|
|
lineHeight: 22,
|
|
maxGap: MAX_GAP,
|
|
points,
|
|
});
|
|
|
|
expect(timePoints[0].isCut).toBe(false);
|
|
expect(timePoints[1].isCut).toBe(true);
|
|
expect(timePoints[1].positionY).toBe(timePoints[0].positionY + MAX_GAP);
|
|
});
|