* 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 { SpHiSysEnergyChart } from '../../../../src/trace/component/chart/SpHiSysEnergyChart';
import { LitPopover } from '../../../../src/base-ui/popover/LitPopoverV';
jest.mock('../../../../src/trace/component/SpSystemTrace', () => {
return {};
});
jest.mock('../../../../src/js-heap/model/DatabaseStruct', () => {
return {};
});
jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => {
return {};
});
jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => {
return {};
});
const intersectionObserverMock = () => ({
observe: () => null,
});
window.IntersectionObserver = jest.fn().mockImplementation(intersectionObserverMock);
window.ResizeObserver =
window.ResizeObserver ||
jest.fn().mockImplementation(() => ({
disconnect: jest.fn(),
observe: jest.fn(),
unobserve: jest.fn(),
}));
const sqlite = require('../../../../src/trace/database/sql/SqlLite.sql');
jest.mock('../../../../src/trace/database/sql/SqlLite.sql');
const processSqlite = require('../../../../src/trace/database/sql/ProcessThread.sql');
jest.mock('../../../../src/trace/database/sql/ProcessThread.sql');
describe('SpHiSysEnergyChart Test', () => {
let htmlElement: any = document.createElement('sp-system-trace');
let spHiSysEnergyChart = new SpHiSysEnergyChart(htmlElement);
let htmlDivElement = document.createElement<LitPopover>('div');
htmlDivElement.setAttribute('id', 'appNameList');
let anomalyData = sqlite.queryAnomalyData;
anomalyData.mockResolvedValue([]);
let maxStateValue = sqlite.queryMaxStateValue;
let max = [
{
maxValue: 200,
type: 'state',
},
{
maxValue: 300,
type: 'sensor',
},
];
maxStateValue.mockResolvedValue(max);
let stateInitData = sqlite.queryStateInitValue;
let stateInitInit = [{
eventName: '',
keyName: '',
}];
stateInitData.mockResolvedValue(stateInitInit);
let MockExits = sqlite.queryEnergyEventExits;
MockExits.mockResolvedValue(['trace_hisys_event']);
let powerData = processSqlite.queryPowerData;
let power = [
{
startNS: 5999127351,
eventName: 'POWER_IDE_AUDIO',
appKey: 'APPNAME',
eventValue: 'com.example.himusicdemo,com.example.himusicdemo_js,com.example.himusicdemo_app',
},
{
startNS: 1291120516,
eventName: 'POWER_IDE_AUDIO',
appKey: 'BACKGROUND_ENERGY',
eventValue: '854,258,141',
},
];
powerData.mockResolvedValue(power);
let stateData = sqlite.queryStateData;
stateData.mockResolvedValue([]);
let sysEventAppName = sqlite.queryEnergyAppName;
let appName = [
{
string_value: 'app_name',
},
];
sysEventAppName.mockResolvedValue(appName);
let querySystemLocationData = sqlite.querySystemLocationData;
let querySystemLockData = sqlite.querySystemLockData;
let querySystemSchedulerData = sqlite.querySystemSchedulerData;
let queryConfigSysEventAppName = sqlite.queryConfigEnergyAppName;
let location = [
{
ts: 100652222,
eventName: 'GNSS_STATE',
appKey: 'TYPE',
Value: '1',
},
{
ts: 3333332224,
eventName: 'GNSS_STATE',
appKey: 'TAG',
Value: '2',
},
];
let lock = [
{
ts: 96555551,
eventName: 'POWER_RUNNINGLOCK',
appKey: 'TYPE',
Value: '1',
},
{
ts: 333234222,
eventName: 'POWER_RUNNINGLOCK',
appKey: 'TAG',
Value: '2',
},
];
let work = [
{
ts: 100593835619,
eventName: 'WORK_ADD',
appKey: 'TYPE',
Value: '1',
},
{
ts: 2315652241,
eventName: 'WORK_STOP',
appKey: 'TAG',
Value: '2',
},
];
let process = [
{
process_name: 'process1',
},
];
querySystemLocationData.mockResolvedValue(location);
querySystemLockData.mockResolvedValue(lock);
querySystemSchedulerData.mockResolvedValue(work);
queryConfigSysEventAppName.mockResolvedValue(process);
it('SpHiSysEnergyChartTest01', function () {
spHiSysEnergyChart.init();
expect(SpHiSysEnergyChart.app_name).toBeUndefined();
});
it('SpHiSysEnergyChartTest04', function () {
let result = [
{
startNS: 33255112,
eventName: 'POWER_IDE_AUDIO',
appKey: 'APPNAME',
eventValue: 'com.example.himusicdemo,com.example.himusicdemo_js,com.example.himusicdemo_app',
},
{
startNS: 5999127352,
eventName: 'POWER_IDE_AUDIO',
appKey: 'BACKGROUND_ENERGY',
eventValue: '854,258,141',
},
{
startNS: 223224352,
eventName: 'POWER_IDE_BLUETOOTH',
appKey: 'APPNAME',
eventValue: 'com.ohos.settings,bt_switch,bt_switch_js,bt_switch_app',
},
{
startNS: 86222222,
eventName: 'POWER_IDE_BLUETOOTH',
appKey: 'BACKGROUND_ENERGY',
eventValue: '76,12,43,431',
},
{
startNS: 5999127382,
eventName: 'POWER_IDE_CAMERA',
appKey: 'APPNAME',
eventValue: 'com.ohos.camera,com.ohos.camera_app,com.ohos.camera_js,com.ohos.camera_ts',
},
{
startNS: 264166822,
eventName: 'POWER_IDE_CAMERA',
appKey: 'BACKGROUND_ENERGY',
eventValue: '375,475,255,963',
},
];
expect(spHiSysEnergyChart.getPowerData(result)).toBeTruthy();
});
it('SpHiSysEnergyChartTest05', function () {
expect(spHiSysEnergyChart.getPowerData([])).toBeTruthy();
});
it('SpHiSysEnergyChartTest06', function () {
expect(htmlDivElement.onclick).toBe(null);
});
});