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('../../../../dist/trace/database/ui-worker/ProcedureWorker.js', () => { 17 return {}; 18}); 19 20// @ts-ignore 21import { 22 FrameDynamicRender, 23 FrameDynamicStruct, 24} from '../../../../dist/trace/database/ui-worker/ProcedureWorkerFrameDynamic.js'; 25// @ts-ignore 26import { Rect } from '../../../../dist/trace/component/trace/timer-shaft/Rect.js'; 27// @ts-ignore 28import { TraceRow } from '../../../../dist/trace/component/trace/base/TraceRow.js'; 29// @ts-ignore 30import { AnimationRanges } from '../../../../dist/trace/bean/FrameComponentBean.js'; 31 32describe('FrameDynamic Test', () => { 33 let frameDynamicRender = new FrameDynamicRender(); 34 let rect = new Rect(341, 2, 10, 10); 35 let canvas = document.createElement('canvas'); 36 canvas.width = 1; 37 canvas.height = 1; 38 let ctx = canvas.getContext('2d'); 39 TraceRow.range = { 40 startNS: 0, 41 endNS: 16868000000, 42 totalNS: 16868000000, 43 }; 44 let dataList = [ 45 { 46 alpha: '0.00', 47 appName: 'test', 48 groupId: 4091445480, 49 height: 0, 50 id: 455, 51 ts: 4091445480, 52 width: 0, 53 x: 0, 54 y: 0, 55 }, 56 { 57 alpha: '70.00', 58 appName: 'test', 59 groupId: 6970503809, 60 height: 0, 61 id: 456, 62 ts: 6970503809, 63 width: 0, 64 x: 0, 65 y: 0, 66 }, 67 { 68 alpha: '13.00', 69 appName: 'test1', 70 frame: rect, 71 groupId: 32238, 72 height: 2766, 73 id: 717, 74 ts: 611455, 75 typeValue: 0, 76 width: 11223, 77 x: 0, 78 y: 1, 79 }, 80 ]; 81 let req = { 82 useCache: false, 83 context: ctx, 84 type: 'dynamicEffectCurve', 85 animationRanges: [{ start: 4091445476, end: 4774481414 }], 86 }; 87 TraceRow.range = { 88 startNS: 0, 89 endNS: 16868000000, 90 totalNS: 16868000000, 91 }; 92 93 let animationRanges = [{ start: 4091445476, end: 4774481414 }]; 94 frameDynamicRender.frameDynamic(dataList, [], TraceRow.skeleton(), animationRanges, false); 95 96 it('FrameDynamicTest01', function () { 97 let [min, max] = frameDynamicRender.getMinAndMaxData(dataList, 'x'); 98 expect([min, max]).toEqual([0, 1]); 99 }); 100 it('FrameDynamicTest02', function () { 101 let currDynamic = { 102 alpha: '16.00', 103 appName: 'test2', 104 frame: rect, 105 groupId: 19312108, 106 height: 206, 107 id: 9654, 108 ts: 10242454, 109 typeValue: 10, 110 width: 1233, 111 x: 10, 112 y: 1, 113 }; 114 frameDynamicRender.drawDynamicPointYStr(ctx, dataList, rect, 0, 20); 115 expect(frameDynamicRender.drawSinglePoint(ctx, currDynamic, TraceRow.skeleton(), 'x', 0, 20)).toBeUndefined(); 116 }); 117 118 it('FrameDynamicTest03', function () { 119 let row = TraceRow.skeleton(); 120 row.dataList = dataList; 121 row.dataListCache = dataList; 122 frameDynamicRender.renderMainThread(req, row); 123 let currDynamicStruct = { 124 alpha: '11.00', 125 appName: 'test4', 126 frame: rect, 127 groupId: 2011538, 128 height: 2766, 129 id: 717, 130 ts: 12100454, 131 typeValue: 0, 132 width: 321, 133 x: 10, 134 y: 11, 135 }; 136 137 let preDynamicStruct = { 138 alpha: '0.00', 139 appName: 'test', 140 frame: rect, 141 groupId: -1, 142 height: 0, 143 id: 456, 144 ts: 6970503809, 145 width: 0, 146 x: 0, 147 y: 0, 148 }; 149 FrameDynamicStruct.draw(ctx, preDynamicStruct, currDynamicStruct, TraceRow.skeleton(), 'x'); 150 FrameDynamicStruct.drawSelect(ctx, currDynamicStruct, TraceRow.skeleton()); 151 expect(FrameDynamicStruct.drawSelectOrHoverArc(ctx, currDynamicStruct)).toBeUndefined(); 152 }); 153}); 154