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 { 17 state, 18 EnergyStateStruct, 19 EnergyStateRender, 20} from '../../../../src/trace/database/ui-worker/ProcedureWorkerEnergyState'; 21import { TraceRow } from '../../../../src/trace/component/trace/base/TraceRow'; 22 23jest.mock('../../../../src/trace/database/ui-worker/cpu/ProcedureWorkerCPU', () => { 24 return {}; 25}); 26jest.mock('../../../../src/trace/component/SpSystemTrace', () => { 27 return {}; 28}); 29describe('ProcedureWorkerEnergyState Test', () => { 30 let energyStateRender: EnergyStateRender; 31 beforeEach(() => { 32 energyStateRender = new EnergyStateRender(); 33 }); 34 afterEach(() => { 35 jest.resetAllMocks(); 36 }); 37 it('ProcedureWorkerEnergyStateTest01', function () { 38 let frame = { 39 x: 40, 40 y: 27, 41 width: 300, 42 height: 370, 43 }; 44 let energyStateDataList = new Array(); 45 energyStateDataList.push({ 46 startNS: 0, 47 dur: 20, 48 length: 51, 49 frame: {x: 0, y: 9, width: 105, height: 110}, 50 }); 51 energyStateDataList.push({startNS: 1, dur: 42, length: 32}); 52 state(energyStateDataList, [{length: 1}], 1, 3, 2, frame, true); 53 }); 54 55 it('ProcedureWorkerEnergyStateTest02', function () { 56 let frame = { 57 x: 20, 58 y: 30, 59 width: 520, 60 height: 230, 61 }; 62 let energyStateDataList = new Array(); 63 energyStateDataList.push({ 64 startNS: 0, 65 dur: 10, 66 length: 15, 67 frame: {x: 50, y: 59, width: 177, height: 70}, 68 }); 69 energyStateDataList.push({startNS: 15, dur: 23, length: 17}); 70 state(energyStateDataList, [{length: 0}], 1, 3, 2, frame, false); 71 }); 72 73 it('ProcedureWorkerEnergyStateTest03', function () { 74 const canvas = document.createElement('canvas'); 75 canvas.width = 1; 76 canvas.height = 1; 77 const ctx = { 78 globalAlpha: 0.5, 79 fillStyle: '#666666', 80 fillRect: jest.fn(() => true), 81 }; 82 const data = { 83 type: '', 84 value: 0, 85 startNs: 1, 86 frame: { 87 x: 20, 88 y: 20, 89 width: 100, 90 height: 100, 91 }, 92 }; 93 expect(EnergyStateStruct.draw(ctx, data)).toBeUndefined(); 94 }); 95 96 it('ProcedureWorkerEnergyStateTest04', function () { 97 expect(EnergyStateStruct.setDrawColor('BRIGHTNESS_NIT')).toBe('#92D6CC'); 98 }); 99 100 it('ProcedureWorkerEnergyStateTest05', function () { 101 expect(EnergyStateStruct.setDrawColor('SIGNAL_LEVEL')).toBe('#61CFBE'); 102 }); 103 104 it('ProcedureWorkerEnergyStateTest06', function () { 105 expect(EnergyStateStruct.setDrawColor('WIFI_EVENT_RECEIVED')).toBe('#46B1E3'); 106 }); 107 108 it('ProcedureWorkerEnergyStateTest07', function () { 109 expect(EnergyStateStruct.setDrawColor('AUDIO_STREAM_CHANGE')).toBe('#ED6F21'); 110 }); 111 112 it('ProcedureWorkerEnergyStateTest08', function () { 113 expect(EnergyStateStruct.setDrawColor('WIFI_STATE')).toBe('#61CFBE'); 114 }); 115 116 it('ProcedureWorkerEnergyStateTest09', function () { 117 expect(EnergyStateStruct.setDrawColor('LOCATION_SWITCH_STATE')).toBe('#61CFBE'); 118 }); 119 120 it('ProcedureWorkerEnergyStateTest10', function () { 121 expect(EnergyStateStruct.setDrawColor('SENSOR_STATE')).toBe('#61CFBE'); 122 }); 123 124 it('ProcedureWorkerEnergyStateTest11', function () { 125 expect(EnergyStateStruct.setDrawColor('aaaa')).toBe('#61CFBE'); 126 }); 127 128 it('ProcedureWorkerEnergyStateTest12', function () { 129 let row = new TraceRow<EnergyStateStruct>(); 130 let energyStateReq = { 131 lazyRefresh: true, 132 type: '', 133 startNS: 7, 134 endNS: 8, 135 totalNS: 1, 136 frame: { 137 x: 50, 138 y: 25, 139 width: 500, 140 height: 220, 141 }, 142 useCache: false, 143 range: { 144 refresh: '', 145 }, 146 canvas: 'bc', 147 context: { 148 font: '14px sans-serif', 149 fillStyle: '#151212', 150 globalAlpha: 0.62, 151 height: 150, 152 width: 110, 153 canvas: { 154 clientWidth: 50, 155 }, 156 clearRect: jest.fn(() => true), 157 measureText: jest.fn(() => true), 158 fillRect: jest.fn(() => []), 159 fillText: jest.fn(() => true), 160 stroke: jest.fn(() => true), 161 closePath: jest.fn(() => true), 162 beginPath: jest.fn(() => true), 163 arc: jest.fn(() => true), 164 fill: jest.fn(() => true), 165 moveTo: jest.fn(() => true), 166 lineTo: jest.fn(() => true), 167 }, 168 lineColor: '#1a4dff', 169 isHover: '', 170 hoverX: 22, 171 wakeupBean: undefined, 172 flagMoveInfo: '', 173 flagSelectedInfo: '', 174 slicesTime: 584, 175 id: 2, 176 x: 32, 177 y: 30, 178 width: 100, 179 height: 100, 180 params: { 181 isLive: true, 182 maxHeight: 21, 183 dpr: 1, 184 hoverFuncStruct: '', 185 selectFuncStruct: undefined, 186 }, 187 }; 188 window.postMessage = jest.fn(() => true); 189 TraceRow.range = jest.fn(() => true); 190 TraceRow.range.startNS = jest.fn(() => 1); 191 expect(energyStateRender.renderMainThread(energyStateReq, row)).toBeUndefined(); 192 }); 193}); 194