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';
17import {
18  energySysEventSender,
19  hiSysEnergyAnomalyDataSender,
20  hiSysEnergyPowerSender,
21  hiSysEnergyStateSender
22} from '../../../../src/trace/database/data-trafic/EnergySysEventSender';
23import { EnergySystemStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerEnergySystem';
24import { threadPool } from '../../../../src/trace/database/SqlLite';
25import { EnergyAnomalyStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerEnergyAnomaly';
26import { EnergyPowerStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerEnergyPower';
27import { EnergyStateStruct } from '../../../../src/trace/database/ui-worker/ProcedureWorkerEnergyState';
28jest.mock('../../../../src/js-heap/model/DatabaseStruct', () => {});
29jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorker', () => {
30  return {};
31});
32jest.mock('../../../../src/trace/database/ui-worker/ProcedureWorkerSnapshot', () => {
33  return {};
34});
35describe('EnergySysEventSender Test', () => {
36  let systemData = {
37    count: 2,
38    dataType: 1,
39    dur: 13200,
40    frame:
41      {x: 70, y: 45, width: 11, height: 10},
42    id: 73,
43    startNs: 89300,
44    token: 54668,
45    type: 1
46  }
47
48  let anomalyData =
49    {
50      id: 126,
51      startNs: 23840,
52      eventName: "ANOMALY_SCREEN_OFF_ENERGY",
53      appKey: "APPNAME",
54      eventValue: "bt_switch"
55    }
56
57  let powerData = {
58    appKey: "APPNAME",
59    eventName: "POWER_IDE_BLUETOOTH",
60    eventValue: "bt_switch",
61    id: 8940,
62    startNS: 1110
63  }
64
65  let stateData = {
66    dur: 3000,
67    frame: {x: 394, y: 5, width: 1, height: 30},
68    id: 5807,
69    startNs: 49686,
70    type: "WIFI_EVENT_RECEIVED",
71    value: 4
72  }
73
74  it('EnergySysEventSenderTest01', () => {
75    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
76      callback(systemData, 1, true);
77    });
78    let systemTraceRow = TraceRow.skeleton<EnergySystemStruct>();
79    energySysEventSender(systemTraceRow).then(result => {
80      expect(result).toHaveLength(1);
81    })
82  });
83
84  it('EnergySysEventSenderTest02', () => {
85    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
86      callback(anomalyData, 1, true);
87    });
88    let anomalyTraceRow = TraceRow.skeleton<EnergyAnomalyStruct>();
89    hiSysEnergyAnomalyDataSender(anomalyTraceRow).then(result => {
90      expect(result).toHaveLength(1);
91    })
92  });
93
94  it('EnergySysEventSenderTest03', () => {
95    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
96      callback(powerData, 1, true);
97    });
98    let powerTraceRow = TraceRow.skeleton<EnergyPowerStruct>();
99    hiSysEnergyPowerSender(powerTraceRow).then(result => {
100      expect(Array.isArray(result)).toBe(true);
101    })
102  });
103
104  it('EnergySysEventSenderTest04', () => {
105    threadPool.submitProto = jest.fn((query: number, params: any, callback: Function) => {
106      callback(stateData, 1, true);
107    });
108    let eventName = ['WIFI_EVENT_RECEIVED'];
109    let stateTraceRow = TraceRow.skeleton<EnergyStateStruct>();
110    hiSysEnergyStateSender(eventName, 0, stateTraceRow).then(result => {
111      expect(result).toHaveLength(1);
112    })
113  });
114});