• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 { TabPaneXpowerThreadEnergy } from '../../../../../../src/trace/component/trace/sheet/xpower/TabPaneXpowerThreadEnergy';
17import { SelectionParam } from '../../../../../../src/trace/bean/BoxSelection';
18import { TraceRow } from '../../../../../../src/trace/component/trace/base/TraceRow';
19import { XpowerThreadInfoStruct } from '../../../../../../src/trace/database/ui-worker/ProcedureWorkerXpowerThreadInfo';
20import { Rect } from '../../../../../../src/trace/database/ui-worker/ProcedureWorkerCommon';
21import { xpowerThreadInfoDataSender } from '../../../../../../src/trace/database/data-trafic/xpower/XpowerThreadSender';
22jest.mock('../../../../../../src/js-heap/model/DatabaseStruct', () => {
23  return {};
24});
25jest.mock('../../../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => {
26  return {};
27});
28jest.mock('../../../../../../src/trace/database/ui-worker/ProcedureWorker', () => {
29  return {};
30});
31window.ResizeObserver =
32  window.ResizeObserver ||
33  jest.fn().mockImplementation(() => ({
34    disconnect: jest.fn(),
35    observe: jest.fn(),
36    unobserve: jest.fn(),
37  }));
38const intersectionObserverMock = () => ({
39  observe: () => null,
40});
41window.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock);
42describe('TabPaneXpowerThreadEnergy', () => {
43  let tabpane = new TabPaneXpowerThreadEnergy();
44  let selectionParam = new SelectionParam();
45  let traceRow = new TraceRow<XpowerThreadInfoStruct>();
46  traceRow.rowId = 'thread_energy';
47  selectionParam.xpowerThreadEnergyMapData.set(
48    traceRow.rowId,
49    (args: unknown): Promise<XpowerThreadInfoStruct[]> | undefined => {
50      let result: Promise<XpowerThreadInfoStruct[]> | undefined;
51      result = xpowerThreadInfoDataSender('thread_energy', traceRow, args);
52      return result;
53    }
54  );
55  selectionParam.rightNs = 100000000;
56  selectionParam.leftNs = 0;
57
58  tabpane.initElements();
59  const mockParentElement = document.createElement('div');
60  mockParentElement.style.height = '100px';
61  Object.defineProperty(tabpane, 'parentElement', {
62    value: mockParentElement,
63    writable: true,
64  });
65
66  tabpane.initElements = jest.fn();
67  tabpane.init = jest.fn();
68  let frame = new Rect(0, 0, 100, 100);
69  it('TabPaneXpowerThreadEnergyTest01', () => {
70    expect(tabpane.initElements()).toBeUndefined();
71    expect(tabpane.connectedCallback()).toBeUndefined();
72    tabpane.data = selectionParam;
73    expect(tabpane.data).toBeUndefined();
74  });
75  it('TabPaneXpowerThreadEnergyTest03', () => {
76    expect(tabpane.sortByColumn({ key: 'name', sort: 1 })).toBeUndefined();
77    expect(tabpane.sortByColumn({ key: 'avg', sort: 2 })).toBeUndefined();
78  });
79  it('TabPaneXpowerThreadEnergyTest04', () => {
80    let res = [
81      {
82        value: 10,
83        valueStr: '10',
84        startNS: 10,
85        dur: 10,
86        valueType: '',
87        startTimeStr: '10',
88        threadTime: 10,
89        threadTimeStr: '10',
90        threadName: '10',
91        threadNameId: 10,
92        count: 10,
93        translateY: 10,
94        frame: frame,
95        isHover: false,
96      },
97    ];
98    let selectionData = [
99      {
100        asyncCatNames: [],
101        asyncNames: [],
102        average: '',
103        avg: '10 mAh',
104        avgDuration: '',
105        avgNumber: 0,
106        avgWeight: '',
107        count: 1,
108        cpu: 0,
109        delta: '',
110        dur: 0,
111        duration: '',
112        energy: '',
113        first: '',
114        last: '',
115        leftNs: 0,
116        max: '10 mAh',
117        maxDuration: 0,
118        maxDurationFormat: '',
119        maxNumber: 0,
120        min: '10 mAh',
121        minNumber: 0,
122        name: '10',
123        occurrences: 0,
124        pid: '',
125        process: '',
126        rate: '',
127        recordStartNs: 0,
128        rightNs: 0,
129        state: '',
130        stateJX: '',
131        tabTitle: '',
132        thread: '',
133        threadIds: [],
134        tid: '',
135        timeStamp: '',
136        trackId: 0,
137        ts: 0,
138        wallDuration: 0,
139        wallDurationFormat: '',
140      },
141    ];
142    expect(tabpane.createSelectThreadEnergyData(res)).toEqual(selectionData);
143  });
144});
145