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