• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { SpSystemTrace } from '../../../../../src/trace/component/SpSystemTrace';
17import { RangeSelect } from '../../../../../src/trace/component/trace/base/RangeSelect';
18import { TraceRow } from '../../../../../src/trace/component/trace/base/TraceRow';
19
20jest.mock('../../../../../src/trace/database/ui-worker/ProcedureWorker', () => {
21  return {};
22});
23jest.mock('../../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => {
24  return {};
25});
26jest.mock('../../../../../src/js-heap/model/DatabaseStruct', () => {
27  return {};
28});
29global.Worker = jest.fn();
30const intersectionObserverMock = () => ({
31  observe: () => null,
32});
33window.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock);
34
35window.ResizeObserver =
36  window.ResizeObserver ||
37  jest.fn().mockImplementation(() => ({
38    disconnect: jest.fn(),
39    observe: jest.fn(),
40    unobserve: jest.fn(),
41  }));
42
43describe('RangeSelect Test', () => {
44  let rangeSelect = new RangeSelect(new SpSystemTrace());
45  it('Utils Test01', () => {
46    expect(rangeSelect).not.toBeUndefined();
47  });
48
49  it('Utils Test02', () => {
50    rangeSelect.rowsEL = document.createElement('div');
51    let mouseEvent = new MouseEvent('mousedown', {
52      button: 1,
53      buttons: 0,
54      clientX: 21,
55      clientY: 100,
56      screenX: 255,
57      screenY: 321,
58    });
59    let htmlElement = document.createElement('div');
60    rangeSelect.rowsPaneEL = htmlElement;
61    expect(rangeSelect.isInRowsEl(mouseEvent)).toBeFalsy();
62  });
63  it('Utils Test09', () => {
64    rangeSelect.rowsEL = document.createElement('div');
65    let mouseEvent = new MouseEvent('mousedown', {
66      button: 0,
67      buttons: 65,
68      clientX: 63,
69      clientY: 1300,
70      screenX: 325,
71      screenY: 325,
72    });
73    expect(rangeSelect.isInSpacerEL(mouseEvent)).toBeFalsy();
74  });
75
76  it('Utils Test05', () => {
77    rangeSelect.isInRowsEl = jest.fn(() => true);
78    rangeSelect.rowsEL = {
79      offsetTop: 100,
80      offsetHeight: 71,
81      offsetLeft: 15,
82      offsetWidth: 134,
83    };
84    let mouseEvent = new MouseEvent('mousedown', {
85      // @ts-ignore
86      offsetY: 1,
87      offsetX: 1,
88      button: 1,
89      buttons: 0,
90      clientX: 2,
91      clientY: 101,
92      screenX: 255,
93      screenY: 321,
94    });
95    let divElement = document.createElement('div');
96    rangeSelect.rowsPaneEL = divElement;
97    rangeSelect.rowsPaneEL.scrollTop = 0;
98    rangeSelect.rowsEL.getBoundingClientRect = jest.fn(() => true);
99    expect(rangeSelect.mouseDown(mouseEvent)).toBeUndefined();
100  });
101
102  it('Utils Test07', () => {
103    rangeSelect.isInRowsEl = jest.fn(() => true);
104    rangeSelect.isDrag = jest.fn(() => true);
105
106    rangeSelect.rowsEL = {
107      offsetTop: 102,
108      offsetHeight: 540,
109      offsetLeft: 390,
110      offsetWidth: 1102,
111    };
112    let mouseEvent = new MouseEvent('mousedown', {
113      // @ts-ignore
114      offsetY: 1,
115      offsetX: 1,
116      button: 2,
117      buttons: 0,
118      clientX: 2,
119      clientY: 100,
120      screenX: 252,
121      screenY: 325,
122    });
123    rangeSelect.drag = true;
124    expect(rangeSelect.mouseUp(mouseEvent)).toBeUndefined();
125  });
126
127  it('Utils Test08', () => {
128    rangeSelect.isInRowsEl = jest.fn(() => true);
129    rangeSelect.isDrag = jest.fn(() => true);
130    rangeSelect.isMouseDown = true;
131    rangeSelect.isHover = true;
132    let rowsELDiv = document.createElement('div');
133    rangeSelect.rowsEL = rowsELDiv;
134    let rows = [
135      {
136        frame: {
137          x: 1,
138          width: 10,
139          y: 2,
140          height: 10,
141        },
142        offsetTop: 100,
143        offsetHeight: 200,
144        offsetLeft: 0,
145        offsetWidth: 100,
146      },
147    ];
148    let mouseEvent = new MouseEvent('mousedown', {
149      // @ts-ignore
150      offsetY: 12,
151      offsetX: 1,
152      button: 0,
153      buttons: 0,
154      clientX: 3,
155      clientY: 100,
156      screenX: 252,
157      screenY: 325,
158    });
159    let traceRowElement = new TraceRow();
160    rangeSelect.timerShaftEL = jest.fn(() => true);
161    rangeSelect.timerShaftEL.sportRuler = jest.fn(() => true);
162    rangeSelect.timerShaftEL.sportRuler.draw = jest.fn(() => true);
163    expect(rangeSelect.mouseMove([traceRowElement], mouseEvent)).toBeUndefined();
164  });
165
166  it('Utils Test10', () => {
167    rangeSelect.isInRowsEl = jest.fn(() => true);
168    rangeSelect.isDrag = jest.fn(() => true);
169
170    rangeSelect.rowsEL = {
171      offsetTop: 93,
172      offsetHeight: 1030,
173      offsetLeft: 93,
174      offsetWidth: 210,
175    };
176    let mouseEvent = new MouseEvent('mousedown', {
177      // @ts-ignore
178      offsetY: 123,
179      offsetX: 1,
180      button: 3,
181      buttons: 0,
182      clientX: 22,
183      clientY: 100,
184      screenX: 255,
185      screenY: 322,
186    });
187    let htmlElement = document.createElement('div');
188    rangeSelect.rowsPaneEL = htmlElement;
189    expect(rangeSelect.isTouchMark(mouseEvent)).toBeFalsy();
190  });
191
192  it('Utils Test06', () => {
193    rangeSelect.isHover = true;
194    let mouseEvent = new MouseEvent('mousedown', {
195      // @ts-ignore
196      offsetY: 14,
197      offsetX: 1,
198      button: 4,
199      buttons: 0,
200      clientX: 2,
201      clientY: 104,
202      screenX: 255,
203      screenY: 325,
204    });
205    expect(rangeSelect.mouseDown(mouseEvent)).toBeUndefined();
206  });
207  it('Utils Test11', () => {
208    rangeSelect.isInRowsEl = jest.fn(() => true);
209    rangeSelect.isDrag = jest.fn(() => true);
210
211    rangeSelect.rowsEL = {
212      offsetTop: 113,
213      offsetHeight: 540,
214      offsetLeft: 146,
215      offsetWidth: 1102,
216    };
217    let mouseEvent = new MouseEvent('mouseout', {
218      // @ts-ignore
219      offsetY: 1,
220      offsetX: 3,
221      button: 4,
222      buttons: 0,
223      clientX: 8,
224      clientY: 99,
225      screenX: 45,
226      screenY: 78,
227    });
228    rangeSelect.drag = true;
229    expect(rangeSelect.mouseOut(mouseEvent)).toBeUndefined();
230  });
231  it('Utils Test12', () => {
232    rangeSelect.isInRowsEl = jest.fn(() => true);
233    rangeSelect.isDrag = jest.fn(() => true);
234    rangeSelect.isMouseDown = false;
235    let mouseEvent = new MouseEvent('mousedown', {
236      // @ts-ignore
237      offsetY: 12,
238      offsetX: 1,
239      button: 74,
240      buttons: 0,
241      clientX: 12,
242      clientY: 100,
243      screenX: 9,
244      screenY: 325,
245    });
246    let traceRowElement = new TraceRow();
247    rangeSelect.timerShaftEL = jest.fn(() => true);
248    rangeSelect.timerShaftEL.sportRuler = jest.fn(() => true);
249    rangeSelect.timerShaftEL.sportRuler.draw = jest.fn(() => true);
250    expect(rangeSelect.mouseMove([traceRowElement], mouseEvent)).toBeUndefined();
251  });
252});
253