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 { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow'; 17 18jest.mock('../../../../src/js-heap/model/DatabaseStruct', () => { 19 return {}; 20}); 21jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => { 22 return {}; 23}); 24jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { 25 return {}; 26}); 27import { 28 EnergyPowerStruct, 29 EnergyPowerRender, 30 power, 31} from '../../../../src/trace/database/ui-worker/ProcedureWorkerEnergyPower'; 32 33describe('ProcedureWorkerEnergyPower Test', () => { 34 it('ProcedureWorkerEnergyPowerTest01', function () { 35 let req = { 36 context: { 37 globalAlpha: 1.0, 38 lineWidth: 1, 39 fillStyle: '#333', 40 }, 41 }; 42 let data = { 43 cpu: 1, 44 location: 2, 45 gpu: 1, 46 display: 1, 47 camera: 1, 48 bluetooth: 3, 49 flashlight: 10, 50 audio: 16, 51 wifiscan: 1, 52 ts: 10, 53 frame: { 54 x: 20, 55 y: 20, 56 width: 100, 57 height: 100, 58 }, 59 }; 60 let row = {frame: 20}; 61 EnergyPowerStruct.drawHistogram = jest.fn(() => true); 62 EnergyPowerStruct.drawPolyline = jest.fn(() => true); 63 TraceRow.range = jest.fn(() => true); 64 TraceRow.range!.startNS = jest.fn(() => 0); 65 TraceRow.range!.endNS = jest.fn(() => 27763331331); 66 TraceRow.range!.totalNS = jest.fn(() => 27763331331); 67 expect(EnergyPowerStruct.draw(req, 3, data, row)).toBeUndefined(); 68 }); 69 70 it('ProcedureWorkerEnergyPowerTest02', function () { 71 let frame = { 72 x: 20, 73 y: 20, 74 width: 100, 75 height: 100, 76 }; 77 let node = { 78 ts: 10, 79 frame: { 80 x: 20, 81 y: 20, 82 width: 100, 83 height: 100, 84 }, 85 }; 86 expect(EnergyPowerStruct.setPowerFrame(node, 1, 2, 5, 3, frame)).toBeUndefined(); 87 }); 88 89 it('ProcedureWorkerEnergyPowerTest03', function () { 90 let frame = { 91 x: 20, 92 y: 20, 93 width: 100, 94 height: 100, 95 }; 96 let node = { 97 ts: 1, 98 frame: { 99 x: 20, 100 y: 20, 101 width: 100, 102 height: 100, 103 }, 104 }; 105 expect(EnergyPowerStruct.setPowerFrame(node, 1, 2, 2000000002, 2000000000, frame)).toBeUndefined(); 106 }); 107 108 it('ProcedureWorkerEnergyPowerTest04', function () { 109 expect(EnergyPowerStruct.getHistogramColor('CPU')).toBe('#92D6CC'); 110 }); 111 112 it('ProcedureWorkerEnergyPowerTest05', function () { 113 expect(EnergyPowerStruct.getHistogramColor('LOCATION')).toBe('#61CFBE'); 114 }); 115 116 it('ProcedureWorkerEnergyPowerTest06', function () { 117 expect(EnergyPowerStruct.getHistogramColor('GPU')).toBe('#86C5E3'); 118 }); 119 120 it('ProcedureWorkerEnergyPowerTest07', function () { 121 expect(EnergyPowerStruct.getHistogramColor('DISPLAY')).toBe('#46B1E3'); 122 }); 123 124 it('ProcedureWorkerEnergyPowerTest08', function () { 125 expect(EnergyPowerStruct.getHistogramColor('CAMERA')).toBe('#C386F0'); 126 }); 127 128 it('ProcedureWorkerEnergyPowerTest09', function () { 129 expect(EnergyPowerStruct.getHistogramColor('BLUETOOTH')).toBe('#8981F7'); 130 }); 131 132 it('ProcedureWorkerEnergyPowerTest10', function () { 133 expect(EnergyPowerStruct.getHistogramColor('AUDIO')).toBe('#AC49F5'); 134 }); 135 136 it('ProcedureWorkerEnergyPowerTest11', function () { 137 expect(EnergyPowerStruct.getHistogramColor('WIFISCAN')).toBe('#92C4BD'); 138 }); 139 140 it('ProcedureWorkerEnergyPowerTest12', function () { 141 expect(EnergyPowerStruct.getHistogramColor('WIFISCANxcda')).toBe('#564AF7'); 142 }); 143 144 it('ProcedureWorkerEnergyPowerTest13', function () { 145 expect(EnergyPowerStruct).not.toBeUndefined(); 146 }); 147 148 it('ProcedureWorkerEnergyPowerTest14', function () { 149 let frame = { 150 x: 50, 151 y: 33, 152 width: 800, 153 height: 500, 154 }; 155 let energyPowerDataList = new Array(); 156 energyPowerDataList.push({ 157 startNS: 0, 158 dur: 90, 159 length: 16, 160 frame: {x: 0, y: 9, width: 20, height: 12}, 161 }); 162 energyPowerDataList.push({startNS: 71, dur: 32, length: 12}); 163 power(energyPowerDataList, [{length: 1}], 1, 3, 2, frame, true, ''); 164 }); 165 166 it('ProcedureWorkerEnergyPowerTest15', function () { 167 let frame = { 168 x: 98, 169 y: 90, 170 width: 500, 171 height: 700, 172 }; 173 let energyPowerDataList = new Array(); 174 energyPowerDataList.push({ 175 startNS: 0, 176 dur: 50, 177 length: 67, 178 frame: {x: 0, y: 9, width: 60, height: 60}, 179 }); 180 energyPowerDataList.push({startNS: 12, dur: 82, length: 16}); 181 power(energyPowerDataList, [{length: 0}], 1, 3, 2, frame, false, ''); 182 }); 183 it('ProcedureWorkerEnergyPowerTest16 ', function () { 184 let energyPowerRender = new EnergyPowerRender(); 185 let powerReq = { 186 lazyRefresh: true, 187 type: '', 188 startNS: 2, 189 endNS: 3, 190 totalNS: 1, 191 frame: { 192 x: 11, 193 y: 11, 194 width: 77, 195 height: 90, 196 }, 197 useCache: false, 198 range: { 199 refresh: 'refresh', 200 }, 201 canvas: { 202 clientWidth: 1 203 }, 204 context: { 205 font: '12px sans-serif', 206 fillStyle: '#a1696d', 207 globalAlpha: 1, 208 beginPath: jest.fn(() => true), 209 measureText: jest.fn(() => true), 210 clearRect: jest.fn(() => true), 211 stroke: jest.fn(() => true), 212 closePath: jest.fn(() => false), 213 fillRect: jest.fn(() => false), 214 fillText: jest.fn(() => true), 215 canvas: { 216 clientWidth: 1 217 }, 218 }, 219 isHover: '', 220 hoverX: 0, 221 x: 10, 222 y: 8, 223 width: 102, 224 height: 102, 225 }; 226 let spApplication; 227 spApplication = { 228 hasAttribute: jest.fn().mockReturnValue(true), 229 }; 230 global.document.getElementsByTagName = jest.fn().mockReturnValue([spApplication]); 231 window.postMessage = jest.fn(() => true); 232 TraceRow.range = jest.fn(() => true); 233 TraceRow.range!.startNS = jest.fn(() => 0); 234 expect(energyPowerRender.renderMainThread(powerReq, new TraceRow<EnergyPowerStruct>())).toBeUndefined(); 235 }); 236}); 237