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 16jest.mock('../../../../src/trace/component/SpSystemTrace', () => { 17 return {}; 18}); 19import { SpLtpoChart } from '../../../../src/trace/component/chart/SpLTPO'; 20import { LtpoStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerLTPO'; 21import { Rect } from '../../../../src/trace/database/ui-worker/ProcedureWorkerCommon'; 22jest.mock('../../../../src/js-heap/model/DatabaseStruct'); 23jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => { 24 return {}; 25}); 26jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { 27 return {}; 28}); 29 30const intersectionObserverMock = () => ({ 31 observe: () => null, 32}); 33window.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock); 34// @ts-ignore 35window.ResizeObserver = 36 window.ResizeObserver || 37 jest.fn().mockImplementation(() => ({ 38 disconnect: jest.fn(), 39 observe: jest.fn(), 40 unobserve: jest.fn(), 41 })); 42const sqlit = require('../../../../src/trace/database/sql/Ltpo.sql'); 43jest.mock('../../../../src/trace/database/sql/Ltpo.sql'); 44 45describe('SpLtpoChart Test', () => { 46 let htmlElement: any = document.createElement('sp-system-trace'); 47 let ltPoChart = new SpLtpoChart(htmlElement); 48 let fanceNameList = sqlit.queryFanceNameList; 49 fanceNameList.mockResolvedValue([ 50 { 51 ts: 122, 52 dur: 245, 53 name: 'Present Fence', 54 }, 55 ]); 56 57 let fpsNameList = sqlit.queryFpsNameList; 58 fpsNameList.mockResolvedValue([ 59 { 60 ts: 1224, 61 dur: 2445, 62 name: 'Layers,ra:te', 63 }, 64 ]); 65 66 let realFpsList = sqlit.queryRealFpsList; 67 realFpsList.mockResolvedValue([ 68 { 69 ts: 124, 70 dur: 445, 71 name: 'CommitAndReleaseLayers SetScreenRefreshRate', 72 }, 73 ]); 74 let presentInfo = sqlit.queryPresentInfo; 75 presentInfo.mockResolvedValue([ 76 { 77 ts: 124, 78 dur: 445, 79 name: 'Present Fence', 80 }, 81 ]); 82 let rSNowTimeListInfo = sqlit.queryRSNowTimeList; 83 rSNowTimeListInfo.mockResolvedValue([ 84 { 85 ts: 124, 86 dur: 445, 87 name: 'Present Fence ffdf', 88 }, 89 ]); 90 let signaledListInfo = sqlit.querySignaledList; 91 signaledListInfo.mockResolvedValue([ 92 { 93 ts: 124, 94 dur: 445, 95 name: 'Present Fence ffdf', 96 }, 97 ]); 98 let skipDataListInfo = sqlit.querySkipDataList; 99 skipDataListInfo.mockResolvedValue([ 100 { 101 ts: 124, 102 dur: 445, 103 name: 'Present Fence ffdf', 104 }, 105 ]); 106 SpLtpoChart.fanceNameList = [ 107 { 108 ts: 122, 109 dur: 245, 110 name: 'Present Fence signaled', 111 presentId: 10, 112 fanceId: 10, 113 fps: 10, 114 startTs: 10, 115 nextStartTs: '20', 116 nextDur: 10, 117 value: 10, 118 pid: 10, 119 itid: 10, 120 startTime: 10, 121 signaled: 10, 122 nowTime: 10, 123 cutTime: 10, 124 cutSendDur: 10, 125 translateY: 10, 126 frame: undefined, 127 isHover: true, 128 }, 129 { 130 ts: 122, 131 dur: 245, 132 name: 'Present Fence', 133 presentId: 10, 134 fanceId: 10, 135 fps: 10, 136 startTs: 10, 137 nextStartTs: '20', 138 nextDur: 10, 139 value: 10, 140 pid: 10, 141 itid: 10, 142 startTime: 10, 143 signaled: 10, 144 nowTime: 10, 145 cutTime: 10, 146 cutSendDur: 10, 147 translateY: 10, 148 frame: undefined, 149 isHover: true, 150 }, 151 ]; 152 SpLtpoChart.fpsnameList = [ 153 { 154 ts: 122, 155 dur: 245, 156 name: 'Present = Fence = signaled', 157 presentId: 10, 158 fanceId: 10, 159 fps: 10, 160 startTs: 10, 161 nextStartTs: '20', 162 nextDur: 10, 163 value: 10, 164 pid: 10, 165 itid: 10, 166 startTime: 10, 167 signaled: 10, 168 nowTime: 10, 169 cutTime: 10, 170 cutSendDur: 10, 171 translateY: 10, 172 frame: undefined, 173 isHover: true, 174 }, 175 { 176 ts: 122, 177 dur: 245, 178 name: 'Present fps: 10 Fence , fps: 20', 179 presentId: 10, 180 fanceId: 10, 181 fps: 10, 182 startTs: 10, 183 nextStartTs: '20', 184 nextDur: 10, 185 value: 10, 186 pid: 10, 187 itid: 10, 188 startTime: 10, 189 signaled: 10, 190 nowTime: 10, 191 cutTime: 10, 192 cutSendDur: 10, 193 translateY: 10, 194 frame: undefined, 195 isHover: true, 196 }, 197 ]; 198 SpLtpoChart.realFpsList = [ 199 { 200 ts: 122, 201 dur: 245, 202 name: 'Present Fence signaled', 203 presentId: 10, 204 fanceId: 10, 205 fps: 10, 206 startTs: 10, 207 nextStartTs: '20', 208 nextDur: 10, 209 value: 10, 210 pid: 10, 211 itid: 10, 212 startTime: 10, 213 signaled: 10, 214 nowTime: 10, 215 cutTime: 10, 216 cutSendDur: 10, 217 translateY: 10, 218 frame: undefined, 219 isHover: true, 220 }, 221 { 222 ts: 122, 223 dur: 245, 224 name: 'Present Fence', 225 presentId: 10, 226 fanceId: 10, 227 fps: 10, 228 startTs: 10, 229 nextStartTs: '20', 230 nextDur: 10, 231 value: 10, 232 pid: 10, 233 itid: 10, 234 startTime: 10, 235 signaled: 10, 236 nowTime: 10, 237 cutTime: 10, 238 cutSendDur: 10, 239 translateY: 10, 240 frame: undefined, 241 isHover: true, 242 }, 243 ]; 244 SpLtpoChart.rsNowTimeList = [ 245 { 246 ts: 122, 247 dur: 245, 248 name: 'Present Fence fps: 10', 249 presentId: 10, 250 fanceId: 10, 251 fps: 10, 252 startTs: 10, 253 nextStartTs: '20', 254 nextDur: 10, 255 value: 10, 256 pid: 10, 257 itid: 10, 258 startTime: 10, 259 signaled: 10, 260 nowTime: 10, 261 cutTime: 10, 262 cutSendDur: 10, 263 translateY: 10, 264 frame: undefined, 265 isHover: true, 266 }, 267 { 268 ts: 122, 269 dur: 245, 270 name: 'Present Fence', 271 presentId: 10, 272 fanceId: 10, 273 fps: 10, 274 startTs: 10, 275 nextStartTs: '20', 276 nextDur: 10, 277 value: 10, 278 pid: 10, 279 itid: 10, 280 startTime: 10, 281 signaled: 10, 282 nowTime: 10, 283 cutTime: 10, 284 cutSendDur: 10, 285 translateY: 10, 286 frame: undefined, 287 isHover: true, 288 }, 289 ]; 290 it('SpLtpoChartTest01', function () { 291 ltPoChart.init(); 292 expect(SpLtpoChart.ltpoDataArr).toEqual([]); 293 }); 294 it('SpLtpoChartTest02', function () { 295 expect(ltPoChart.setRealFps()).toBeUndefined(); 296 }); 297 it('SpLtpoChartTest3', function () { 298 expect(ltPoChart.deleteUselessFence(SpLtpoChart.fpsnameList, SpLtpoChart.fpsnameList)).toBeUndefined(); 299 }); 300 it('SpLtpoChartTest04', function () { 301 expect(SpLtpoChart.presentArr).toEqual([]); 302 }); 303 it('SpLtpoChartTest05', function () { 304 expect(ltPoChart.initFenceName()).toBeUndefined(); 305 }); 306 it('SpLtpoChartTest06', function () { 307 expect(ltPoChart.initFpsName()).toBeUndefined(); 308 }); 309 it('SpLtpoChartTest07', function () { 310 expect(ltPoChart.initRealFps()).toBeUndefined(); 311 }); 312 it('SpLtpoChartTest08', function () { 313 expect(ltPoChart.setRealFps()).toBeUndefined(); 314 }); 315 it('SpLtpoChartTest09', function () { 316 let lptoArr = []; 317 let fanceId = 10; 318 let fps = 10; 319 let signaled = 10; 320 let startTs = 0; 321 let dur = 10; 322 let nextStartTs = 10; 323 let nextDur = 10; 324 expect(ltPoChart.pushLtpoData(lptoArr, fanceId, fps, signaled, startTs, dur, nextStartTs, nextDur)).toBeUndefined(); 325 }); 326 327 it('SpLtpoChartTest10', function () { 328 expect(ltPoChart.specialValue(0.2)).toBe(0); 329 expect(ltPoChart.specialValue(0.5)).toBe(0); 330 expect(ltPoChart.specialValue(0.7)).toBe(1); 331 expect(ltPoChart.specialValue(1.8)).toBe(2); 332 }); 333}); 334