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'; 17jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => { 18 return {}; 19}); 20import { 21 heap, 22 HeapStruct, 23 NativeMemoryRender, 24 HeapRender, 25} from '../../../../src/trace/database/ui-worker/ProcedureWorkerHeap'; 26import { Rect } from '../../../../src/trace/component/trace/timer-shaft/Rect'; 27jest.mock('../../../../src/trace/component/SpSystemTrace', () => { 28 return {}; 29}); 30describe(' Test', () => { 31 it('HeapTest01', () => { 32 let heapDataList = new Array(); 33 heapDataList.push({ 34 startTime: 40, 35 dur: 150, 36 frame: { x: 0, y: 19, width: 20, height: 10 }, 37 }); 38 heapDataList.push({ startTime: 12, dur: 21 }); 39 let rect = new Rect(0, 10, 30, 10); 40 let res = [ 41 { 42 startTs: 11, 43 dur: 166, 44 length: 15, 45 frame: '', 46 }, 47 ]; 48 heap(heapDataList, res, 1, 100254, 100254, rect, true); 49 }); 50 51 it('HeapTest02', () => { 52 let heapHataList = new Array(); 53 heapHataList.push({ 54 startTime: 1, 55 dur: 118, 56 frame: { x: 60, y: 9, width: 10, height: 10 }, 57 }); 58 heapHataList.push({ 59 startTime: 1, 60 dur: 15, 61 frame: { x: 0, y: 19, width: 110, height: 130 }, 62 }); 63 let rect = new Rect(0, 10, 10, 10); 64 let res = [ 65 { 66 startTs: 0, 67 dur: 10, 68 length: 0, 69 frame: '', 70 }, 71 ]; 72 heap(heapHataList, res, 1, 100254, 100254, rect, false); 73 }); 74 75 it('HeapTest03', () => { 76 const canvas = document.createElement('canvas'); 77 canvas.width = 11; 78 canvas.height = 12; 79 const ctx = canvas.getContext('2d'); 80 81 const data = { 82 frame: { 83 x: 250, 84 y: 250, 85 width: 100, 86 height: 100, 87 }, 88 startNS: 200, 89 value: 50, 90 }; 91 expect(HeapStruct.drawHeap(ctx, data, 0)).toBeUndefined(); 92 }); 93 it('HeapTest04', () => { 94 const canvas = document.createElement('canvas'); 95 canvas.width = 11; 96 canvas.height = 11; 97 const ctx = canvas.getContext('2d'); 98 99 const data = { 100 frame: { 101 x: 205, 102 y: 205, 103 width: 100, 104 height: 100, 105 }, 106 maxHeapSize: 200, 107 value: 50, 108 }; 109 expect(HeapStruct.drawHeap(ctx, data, 1)).toBeUndefined(); 110 }); 111 112 it('HeapTest05', function () { 113 let heapRender = new HeapRender(); 114 let heapReq = [{ 115 lazyRefresh: true, 116 type: '', 117 startNS: 3, 118 endNS: 9, 119 totalNS: 6, 120 frame: { 121 x: 20, 122 y: 20, 123 width: 200, 124 height: 200, 125 }, 126 useCache: false, 127 range: { 128 refresh: '', 129 }, 130 canvas: 'canvas', 131 context: { 132 font: '11px sans-serif', 133 fillStyle: '#ec407a', 134 globalAlpha: 0.56, 135 clearRect: jest.fn(() => true), 136 beginPath: jest.fn(() => false), 137 closePath: jest.fn(() => true), 138 measureText: jest.fn(() => true), 139 stroke: jest.fn(() => true), 140 fillRect: jest.fn(() => true), 141 fillText: jest.fn(() => true), 142 }, 143 lineColor: '#666666', 144 isHover: '', 145 hoverX: 1, 146 params: 'params', 147 wakeupBean: undefined, 148 flagMoveInfo: '', 149 flagSelectedInfo: '', 150 slicesTime: 1, 151 id: 1, 152 x: 20, 153 y: 20, 154 width: 320, 155 height: 320, 156 }]; 157 window.postMessage = jest.fn(() => true); 158 let frame = { x: 0, y: 9, width: 10, height: 10 }; 159 expect(heap(heapReq, heapReq, 0, 52100, 3569,frame , true)).toBeUndefined(); 160 }); 161 it('HeapTest04', () => { 162 const canvas = document.createElement('canvas'); 163 canvas.width = 1; 164 canvas.height = 1; 165 const ctx = canvas.getContext('2d'); 166 167 const data = { 168 frame: { 169 x: 20, 170 y: 20, 171 width: 100, 172 height: 100, 173 }, 174 startNS: 200, 175 value: 50, 176 }; 177 const node = { 178 frame: { 179 x: 20, 180 y: 20, 181 width: 100, 182 height: 100, 183 }, 184 startNS: 200, 185 value: 50, 186 }; 187 expect(HeapStruct.setFrame(node, 2, 1, 5, 4, data)).toBeUndefined(); 188 }); 189 it('HeapTest07', function () { 190 let heapRender = new HeapRender(); 191 let canvas = document.createElement('canvas') as HTMLCanvasElement; 192 let context = canvas.getContext('2d'); 193 const data = { 194 context: context!, 195 useCache: true, 196 type: '', 197 traceRange: [], 198 }; 199 window.postMessage = jest.fn(() => true); 200 expect(heapRender.renderMainThread(data, new TraceRow())).toBeUndefined(); 201 }); 202}); 203