MarkerTimeline
Summary: _typescript_ Reviewed By: priteshrnandgaonkar Differential Revision: D16828814 fbshipit-source-id: 13b86338a73a4838857a31e16ea184e35ebfa7d0
This commit is contained in:
committed by
Facebook Github Bot
parent
cd10856c3e
commit
3691305b4d
87
src/ui/components/__tests__/MarkerTimeline.electron.tsx
Normal file
87
src/ui/components/__tests__/MarkerTimeline.electron.tsx
Normal file
@@ -0,0 +1,87 @@
|
||||
/**
|
||||
* 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);
|
||||
});
|
||||
Reference in New Issue
Block a user