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 { RangeSelect } from '../../../../../src/trace/component/trace/base/RangeSelect'; 17import { TraceRow } from '../../../../../src/trace/component/trace/base/TraceRow'; 18import { SpSystemTrace } from '../../../../../src/trace/component/SpSystemTrace'; 19jest.mock('../../../../../src/trace/database/ui-worker/ProcedureWorker', () => { 20 return {}; 21}); 22 23const intersectionObserverMock = () => ({ 24 observe: () => null, 25}); 26window.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock); 27 28window.ResizeObserver = 29 window.ResizeObserver || 30 jest.fn().mockImplementation(() => ({ 31 disconnect: jest.fn(), 32 observe: jest.fn(), 33 unobserve: jest.fn(), 34 })); 35 36describe('RangeSelect Test', () => { 37 beforeAll(() => {}); 38 39 it('Utils Test01', () => { 40 let rangeSelect = new RangeSelect(); 41 expect(rangeSelect).not.toBeUndefined(); 42 }); 43 44 it('Utils Test02', () => { 45 let rangeSelect = new RangeSelect(); 46 rangeSelect.rowsEL = document.createElement('div'); 47 let mouseEvent = new MouseEvent('mousedown', { 48 button: 1, 49 buttons: 0, 50 clientX: 21, 51 clientY: 100, 52 screenX: 255, 53 screenY: 321, 54 }); 55 let htmlElement = document.createElement('div'); 56 rangeSelect.rowsPaneEL = htmlElement; 57 rangeSelect.timerShaftDragEL = jest.fn(() => true); 58 rangeSelect.timerShaftDragEL.timerShaftDragEL = jest.fn(() => true); 59 expect(rangeSelect.isInRowsEl(mouseEvent)).toBeFalsy(); 60 }); 61 it('Utils Test09', () => { 62 let rangeSelect = new RangeSelect(new SpSystemTrace()); 63 rangeSelect.rowsEL = document.createElement('div'); 64 let mouseEvent = new MouseEvent('mousedown', { 65 button: 0, 66 buttons: 65, 67 clientX: 63, 68 clientY: 1300, 69 screenX: 325, 70 screenY: 325, 71 }); 72 let htmlElement = document.createElement('div'); 73 rangeSelect.spacerEL = htmlElement; 74 expect(rangeSelect.isInSpacerEL(mouseEvent)).toBeFalsy(); 75 }); 76 77 it('Utils Test05', () => { 78 let rangeSelect = new RangeSelect(); 79 rangeSelect.isInRowsEl = jest.fn(() => true); 80 rangeSelect.rowsEL = { 81 // offsetTop: 100, 82 offsetHeight: 71, 83 offsetLeft: 15, 84 offsetWidth: 134, 85 }; 86 let mouseEvent = new MouseEvent('mousedown', { 87 // @ts-ignore 88 offsetY: 1, 89 offsetX: 1, 90 button: 1, 91 buttons: 0, 92 clientX: 2, 93 clientY: 101, 94 screenX: 255, 95 screenY: 321, 96 }); 97 let divElement = document.createElement('div'); 98 rangeSelect.rowsPaneEL = divElement; 99 rangeSelect.spacerEL = jest.fn(() => true); 100 rangeSelect.spacerEL.offsetTop = jest.fn(() => true); 101 rangeSelect.rowsPaneEL.scrollTop = 0; 102 rangeSelect.rowsEL.getBoundingClientRect = jest.fn(() => true); 103 let htmlElement = document.createElement('div'); 104 rangeSelect.spacerEL = htmlElement; 105 expect(rangeSelect.mouseDown(mouseEvent)).toBeUndefined(); 106 }); 107 108 it('Utils Test07', () => { 109 let rangeSelect = new RangeSelect(); 110 rangeSelect.isInRowsEl = jest.fn(() => true); 111 rangeSelect.isDrag = jest.fn(() => true); 112 113 rangeSelect.rowsEL = { 114 offsetTop: 102, 115 offsetHeight: 540, 116 offsetLeft: 390, 117 offsetWidth: 1102, 118 }; 119 let mouseEvent = new MouseEvent('mousedown', { 120 // @ts-ignore 121 offsetY: 1, 122 offsetX: 1, 123 button: 2, 124 buttons: 0, 125 clientX: 2, 126 clientY: 100, 127 screenX: 252, 128 screenY: 325, 129 }); 130 rangeSelect.spacerEL = jest.fn(() => true); 131 rangeSelect.spacerEL.offsetTop = jest.fn(() => 1); 132 rangeSelect.drag = true; 133 rangeSelect.rowsEL = jest.fn(() => true); 134 rangeSelect.rowsEL.getBoundingClientRect = jest.fn(() => true); 135 rangeSelect.spacerEL.containPoint = jest.fn(() => true); 136 rangeSelect.spacerEL.getBoundingClientRect = jest.fn(() => true); 137 rangeSelect.rowsPaneEL = jest.fn(() => true); 138 rangeSelect.rowsPaneEL.scrollTop = jest.fn(() => true); 139 expect(rangeSelect.mouseUp(mouseEvent)).toBeUndefined(); 140 }); 141 142 it('Utils Test08', () => { 143 let rangeSelect = new RangeSelect(new SpSystemTrace()); 144 rangeSelect.isInRowsEl = jest.fn(() => true); 145 rangeSelect.isDrag = jest.fn(() => true); 146 rangeSelect.isMouseDown = true; 147 rangeSelect.isHover = true; 148 let rowsELDiv = document.createElement('div'); 149 rangeSelect.rowsEL = rowsELDiv; 150 let rows = [ 151 { 152 frame: { 153 x: 1, 154 width: 10, 155 y: 2, 156 height: 10, 157 }, 158 offsetTop: 100, 159 offsetHeight: 200, 160 offsetLeft: 0, 161 offsetWidth: 100, 162 }, 163 ]; 164 let mouseEvent = new MouseEvent('mousedown', { 165 // @ts-ignore 166 offsetY: 12, 167 offsetX: 1, 168 button: 0, 169 buttons: 0, 170 clientX: 3, 171 clientY: 100, 172 screenX: 252, 173 screenY: 325, 174 }); 175 rangeSelect.timerShaftDragEL = jest.fn(() => true); 176 rangeSelect.timerShaftEL = jest.fn(() => true); 177 rangeSelect.timerShaftEL.sportRuler = jest.fn(() => true); 178 rangeSelect.timerShaftEL.sportRuler.isRangeSelect = jest.fn(() => true); 179 rangeSelect.timerShaftEL.sportRuler.draw = jest.fn(() => true); 180 rangeSelect.timerShaftDragEL.timerShaftDragEL = jest.fn(() => 0); 181 rangeSelect.spacerEL = jest.fn(() => true); 182 rangeSelect.spacerEL.offsetTop = jest.fn(() => 1); 183 rangeSelect.ns2x = jest.fn(() => 1); 184 rangeSelect.mouseX = jest.fn(() => 10); 185 rangeSelect.markA = jest.fn(() => 8); 186 rangeSelect.markB = jest.fn(() => 9); 187 let htmlElement = document.createElement('div'); 188 rangeSelect.spacerEL = htmlElement; 189 let rowElement = document.createElement('div'); 190 rangeSelect.rowsPaneEL = rowElement; 191 rangeSelect.favoriteRowsEL = rowElement; 192 let traceRowElement = new TraceRow() 193 expect(rangeSelect.mouseMove([traceRowElement], mouseEvent)).toBeUndefined(); 194 }); 195 196 it('Utils Test10', () => { 197 let rangeSelect = new RangeSelect(); 198 rangeSelect.isInRowsEl = jest.fn(() => true); 199 rangeSelect.isDrag = jest.fn(() => true); 200 201 rangeSelect.rowsEL = { 202 offsetTop: 93, 203 offsetHeight: 1030, 204 offsetLeft: 93, 205 offsetWidth: 210, 206 }; 207 let mouseEvent = new MouseEvent('mousedown', { 208 // @ts-ignore 209 offsetY: 123, 210 offsetX: 1, 211 button: 3, 212 buttons: 0, 213 clientX: 22, 214 clientY: 100, 215 screenX: 255, 216 screenY: 322, 217 }); 218 let htmlElement = document.createElement('div'); 219 rangeSelect.rowsPaneEL = htmlElement; 220 rangeSelect.timerShaftDragEL = jest.fn(() => true); 221 rangeSelect.timerShaftDragEL.timerShaftDragEL = jest.fn(() => 0); 222 expect(rangeSelect.isTouchMark(mouseEvent)).toBeFalsy(); 223 }); 224 225 it('Utils Test06', () => { 226 let rangeSelect = new RangeSelect(); 227 rangeSelect.isHover = true; 228 let mouseEvent = new MouseEvent('mousedown', { 229 // @ts-ignore 230 offsetY: 14, 231 offsetX: 1, 232 button: 4, 233 buttons: 0, 234 clientX: 2, 235 clientY: 104, 236 screenX: 255, 237 screenY: 325, 238 }); 239 expect(rangeSelect.mouseDown(mouseEvent)).toBeUndefined(); 240 }); 241 it('Utils Test11', () => { 242 let rangeSelect = new RangeSelect(); 243 rangeSelect.isInRowsEl = jest.fn(() => true); 244 rangeSelect.isDrag = jest.fn(() => true); 245 246 rangeSelect.rowsEL = { 247 offsetTop: 113, 248 offsetHeight: 540, 249 offsetLeft: 146, 250 offsetWidth: 1102, 251 }; 252 let mouseEvent = new MouseEvent('mouseout', { 253 // @ts-ignore 254 offsetY: 1, 255 offsetX: 3, 256 button: 4, 257 buttons: 0, 258 clientX: 8, 259 clientY: 99, 260 screenX: 45, 261 screenY: 78, 262 }); 263 rangeSelect.spacerEL = jest.fn(() => true); 264 rangeSelect.rowsEL = jest.fn(() => true); 265 rangeSelect.rowsEL.getBoundingClientRect = jest.fn(() => true); 266 rangeSelect.spacerEL.containPoint = jest.fn(() => true); 267 rangeSelect.spacerEL.getBoundingClientRect = jest.fn(() => true); 268 rangeSelect.rowsPaneEL = jest.fn(() => true); 269 rangeSelect.rowsPaneEL.scrollTop = jest.fn(() => true); 270 rangeSelect.spacerEL.offsetTop = jest.fn(() => 1); 271 rangeSelect.drag = true; 272 expect(rangeSelect.mouseOut(mouseEvent)).toBeUndefined(); 273 }); 274 it('Utils Test12', () => { 275 let rangeSelect = new RangeSelect(new SpSystemTrace()); 276 rangeSelect.isInRowsEl = jest.fn(() => true); 277 rangeSelect.isDrag = jest.fn(() => true); 278 rangeSelect.isMouseDown = false; 279 let rowsELDiv = document.createElement('div'); 280 rangeSelect.rowsEL = rowsELDiv; 281 let mouseEvent = new MouseEvent('mousedown', { 282 // @ts-ignore 283 offsetY: 12, 284 offsetX: 1, 285 button: 74, 286 buttons: 0, 287 clientX: 12, 288 clientY: 100, 289 screenX: 9, 290 screenY: 325, 291 }); 292 rangeSelect.timerShaftEL = jest.fn(() => true); 293 rangeSelect.timerShaftEL.sportRuler = jest.fn(() => true); 294 rangeSelect.timerShaftEL.sportRuler.isRangeSelect = jest.fn(() => true); 295 rangeSelect.timerShaftEL.sportRuler.draw = jest.fn(() => true); 296 rangeSelect.timerShaftDragEL = jest.fn(() => true); 297 rangeSelect.timerShaftDragEL.timerShaftDragEL = jest.fn(() => 0); 298 rangeSelect.spacerEL = jest.fn(() => true); 299 let htmlElement = document.createElement('div'); 300 rangeSelect.spacerEL = htmlElement; 301 let rowElement = document.createElement('div'); 302 rangeSelect.rowsPaneEL = rowElement; 303 rangeSelect.favoriteRowsEL = rowElement; 304 let traceRowElement = new TraceRow(); 305 rangeSelect.ns2x = jest.fn(() => 1); 306 rangeSelect.mouseX = jest.fn(() => 10); 307 rangeSelect.markA = jest.fn(() => 8); 308 rangeSelect.markB = jest.fn(() => 9); 309 expect(rangeSelect.mouseMove([traceRowElement], mouseEvent)).toBeUndefined(); 310 }); 311}); 312