/* * Copyright (C) 2022 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { TabPaneSummary } from '../../../../../../src/trace/component/trace/sheet/ark-ts/TabPaneSummary'; import { HeapDataInterface } from '../../../../../../src/js-heap/HeapDataInterface'; import { SpArkTsChart } from '../../../../../../src/trace/component/chart/SpArkTsChart'; jest.mock('../../../../../../src/js-heap/model/DatabaseStruct', () => {}); jest.mock('../../../../../../src/base-ui/select/LitSelect', () => { return {}; }); jest.mock('../../../../../../src/trace/database/ui-worker/ProcedureWorker', () => { return {}; }); // @ts-ignore window.ResizeObserver = window.ResizeObserver || jest.fn().mockImplementation(() => ({ disconnect: jest.fn(), observe: jest.fn(), unobserve: jest.fn(), })); describe('TabPaneSummary Test', () => { let tabPaneSummary = new TabPaneSummary(); tabPaneSummary.tbs = jest.fn(() => { return { scrollTop: 0, }; }); tabPaneSummary.tbs.snapshotDataSource = jest.fn(() => { return []; }); it('TabPaneSummaryTest01', () => { document.body.innerHTML = ` `; let tabPaneSummary = document.querySelector('#sss') as TabPaneSummary; tabPaneSummary.tbsTable = jest.fn(() => { return { scrollTop: 0, }; }); let childenData = [ { addedCount: 49, addedIndx: [33, 3], addedSize: 336, childCount: 1296, children: [], classChildren: [], deletedIdx: [325, 338], deltaCount: 0, deltaSize: 12, distance: 61, edgeCount: 0, edgeName: 'TSFunctionType', fileId: 0, hasNext: true, id: 44, index: 30, isAdd: false, isHover: false, isSelected: false, nextId: [], nodeName: 'TSFunctionType', objectName: 'TSFunctionTypeX98', removedCount: 38, removedSize: 3332, retainedSize: -1, retains: [], shallowSize: 414, showBox: false, showCut: false, status: true, targetFileId: 1, traceNodeId: 34, type: 314, }, { addedCount: 649, addedIndx: [219, 7], addedSize: 78, childCount: 46, children: [], classChildren: [], deletedIdx: [6, 787], deltaCount: 0, deltaSize: 87, distance: -1, edgeCount: 77, edgeName: 'CompletionRecord', fileId: 23, hasNext: true, id: 4, index: 70, isAdd: false, isHover: false, isSelected: false, nextId: [], nodeName: 'CompletionRecord', objectName: 'CompletionRecordX22', removedCount: 648, removedSize: 72, retainedSize: -1, retains: [], shallowSize: 77, showBox: false, showCut: false, status: true, targetFileId:771, traceNodeId: 87, type: 994, }, ]; let retainsData = [ { shallowSize: 10, retainedSize: 10, shallowPercent: 10, retainedPercent: 10, distance: 1000000001, nodeName: '(system)', objectName: '(system)X23', edgeName: '(system)', children: childenData, }, { shallowSize: 1, retainedSize: 1, shallowPercent: 1, retainedPercent: 1, distance: 100000000, nodeName: 'HiddenClass', objectName: 'HiddenClassX34', edgeName: 'HiddenClass', children: childenData, }, ]; let ddd = [ { addedCount: 6128, addedIndx: [119, 326], addedSize: 652, childCount: 1296, children: [], classChildren: [], deletedIdx: [225, 338], deltaCount: 0, deltaSize: -16, distance: -1, edgeCount: 0, edgeName: 'JSOBJECT(Ctor=12', fileId: 0, hasNext: true, id: -1, index: 0, isAdd: false, isHover: false, isSelected: false, nextId: [], nodeName: 'JSOBJECT(Ctor=', objectName: 'JSOBJECT(Ctor= X34', removedCount: 648, removedSize: 38952, retainedSize: -1, retains: [], shallowSize: -1, showBox: false, showCut: false, status: true, targetFileId: 21, traceNodeId: -1, type: 224, }, { addedCount: 648, addedIndx: [319, 23], addedSize: 37, childCount: 122, children: [], classChildren: [], deletedIdx: [35, 328], deltaCount: 70, deltaSize: 36, distance: 9, edgeCount: 0, edgeName: 'Proxy', fileId: 1, hasNext: true, id: -1, index: 990, isAdd: false, isHover: false, isSelected: false, nextId: [], nodeName: 'Proxy', objectName: 'ProxyX21', removedCount: 648, removedSize: 382, retainedSize: -1, retains: [], shallowSize: 981, showBox: false, showCut: false, status: true, targetFileId: 81, traceNodeId: 121, type: 34, }, { addedCount: 61, addedIndx: [31, 31], addedSize: 86, childCount: 1686, children: [], classChildren: [], deletedIdx: [123, 108], deltaCount: 0, deltaSize: 996, distance: 91, edgeCount: 0, edgeName: 'InternalAccessort44', fileId: 2, hasNext: true, id: -1, index: 90, isAdd: false, isHover: false, isSelected: false, nextId: [], nodeName: 'InternalAccessor', objectName: 'InternalAccessorX32', removedCount: 648, removedSize: 31199, retainedSize: 98, retains: [], shallowSize: 91, showBox: false, showCut: false, status: true, targetFileId: 81, traceNodeId: 1, type: 2, }, ]; let htmlDivElement = document.createElement('div'); tabPaneSummary.leftTheadTable = jest.fn(() => htmlDivElement); tabPaneSummary.rightTheadTable = jest.fn(() => htmlDivElement); tabPaneSummary.tbsTable = jest.fn(() => { return { scrollTop: 0, }; }); tabPaneSummary.rightTheadTable.removeAttribute = jest.fn(() => true); tabPaneSummary.rightTheadTable.hasAttribute = jest.fn(() => {}); tabPaneSummary.leftTheadTable.hasAttribute = jest.fn(() => {}); tabPaneSummary.leftTheadTable.removeAttribute = jest.fn(() => true); tabPaneSummary.file = { name: 'Timeline', id: '', }; HeapDataInterface.getInstance().getAllocationStackData = jest.fn(() => { return [ { id: 10, index: 20, name: '', scriptName: '', scriptId: 50, line: 30, column: 670, }, { id: 60, index: 50, name: '', scriptName: 'string', scriptId: 40, line: 980, column: 90, }, ]; }); let htmlDivElement1 = document.createElement('div'); htmlDivElement1.className = 'table'; tabPaneSummary.tbs.meauseTreeRowElement = jest.fn(() => { return []; }); tabPaneSummary.tblSummary.meauseTreeRowElement = jest.fn(() => { return []; }); let rowObjectData = { top: 1, height: 0, rowIndex: 1, data: { status: true, targetFileId: 123, children: childenData, getChildren: () => {}, }, expanded: true, rowHidden: false, children: childenData, depth: -1, }; HeapDataInterface.getInstance().getRetains = jest.fn(() => retainsData); let iconRowClick = new CustomEvent('row-click', { detail: { data: rowObjectData.data, }, composed: true, }); let iconClick = new CustomEvent('icon-click', { detail: { data: rowObjectData.data, }, composed: true, }); let iconkeyUpClick = new CustomEvent('keyup', { detail: { key: 'addedCount', sort: 1, }, composed: true, }); iconClick.detail.data.isString = jest.fn(() => true); tabPaneSummary.tblSummary.dispatchEvent(iconRowClick); tabPaneSummary.tblSummary.dispatchEvent(iconClick); tabPaneSummary.tbs.dispatchEvent(iconClick); tabPaneSummary.sortByLeftTable('distance', 0); tabPaneSummary.sortByLeftTable('shallowSize', 1); tabPaneSummary.sortByLeftTable('retainedSize', 1); tabPaneSummary.sortByLeftTable('objectName', 1); HeapDataInterface.getInstance().getClassesListForSummary = jest.fn(() => { return retainsData; }); expect(tabPaneSummary.initSummaryData({ name: 'Timeline', id: ''}, 0, 0)).toBeUndefined(); }); it('TabPaneSummaryTest02', () => { document.body.innerHTML = ` `; let tabPaneSummary = document.querySelector('#ts') as TabPaneSummary; expect(tabPaneSummary.sortByLeftTable('shallowSize', 1)).toBeUndefined(); }); it('TabPaneSummaryTest03', () => { document.body.innerHTML = ` `; let tabPaneSummary = document.querySelector('#ts') as TabPaneSummary; expect(tabPaneSummary.sortByLeftTable('retainedSize', 1)).toBeUndefined(); }); it('TabPaneSummaryTest04', () => { document.body.innerHTML = ` `; let tabPaneSummary = document.querySelector('#ts') as TabPaneSummary; expect(tabPaneSummary.sortByLeftTable('distance', 1)).toBeUndefined(); }); it('TabPaneSummaryTest05', () => { document.body.innerHTML = ` `; let tabPaneSummary = document.querySelector('#ts') as TabPaneSummary; expect(tabPaneSummary.sortByRightTable('shallowSize', 1)).toBeUndefined(); }); it('TabPaneSummaryTest06', () => { document.body.innerHTML = ` `; let tabPaneSummary = document.querySelector('#ts') as TabPaneSummary; expect(tabPaneSummary.sortByRightTable('retainedSize', 1)).toBeUndefined(); }); it('TabPaneSummaryTest07', () => { document.body.innerHTML = ` `; let tabPaneSummary = document.querySelector('#ts') as TabPaneSummary; expect(tabPaneSummary.sortByRightTable('distance', 1)).toBeUndefined(); }); it('TabPaneSummaryTest08', () => { document.body.innerHTML = ` `; let tabPaneSummary = document.querySelector('#ts') as TabPaneSummary; expect(tabPaneSummary.sortByRightTable('objectName', 1)).toBeUndefined(); }); it('TabPaneSummaryTest09', () => { expect(tabPaneSummary.clickToggleTable()).toBeUndefined(); }); it('TabPaneSummaryTest10', () => { expect(tabPaneSummary.classFilter()).toBeUndefined(); }); });