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 {
17  systemDataSql,
18  chartEnergyAnomalyDataSql,
19  queryPowerValueSql,
20  queryStateDataSql,
21  queryStateProtoDataSql,
22  energySysEventReceiver,
23  hiSysEnergyAnomalyDataReceiver,
24  hiSysEnergyStateReceiver,
25  hiSysEnergyPowerReceiver
26} from '../../../../src/trace/database/data-trafic/EnergySysEventReceiver';
27import { TraficEnum } from '../../../../src/trace/database/data-trafic/utils/QueryEnum';
28
29describe('EnergySysEventReceiver Test', () => {
30  let data;
31  let proc;
32  beforeEach(() => {
33    data = {
34      params: {
35        trafic: TraficEnum.ProtoBuffer,
36        sharedArrayBuffers: {
37          id: new Uint16Array([1, 2, 3]),
38        },
39      },
40    };
41    proc = jest.fn((sql) => [
42      {energyData: {id: 1, startNs: 4.4, eventName: '', appKey: '', eventValue: ''}},
43      {energyData: {id: 2, startNs: 5.5, eventName: '', appKey: '', eventValue: ''}},
44      {energyData: {id: 3, startNs: 5.5, eventName: '', appKey: '', eventValue: ''}},
45      {energyData: {id: 4, startNs: 5.5, eventName: '', appKey: '', eventValue: ''}},
46      {energyData: {id: 5, startNs: 5.5, eventName: '', appKey: '', eventValue: ''}},
47    ]);
48  });
49  it('EnergySysEventReceiverTest01', () => {
50    let args = {
51      recordStartNS: 1000,
52      endNS: 3000,
53      startNS: 2000,
54      width: 10
55    };
56    expect(systemDataSql(args)).toBeTruthy();
57    expect(chartEnergyAnomalyDataSql(args)).toBeTruthy();
58    expect(queryPowerValueSql(args)).toBeTruthy();
59    expect(queryStateDataSql(args)).toBeTruthy();
60    expect(queryStateProtoDataSql(args)).toBeTruthy();
61  });
62  it('EnergySysEventReceiverTest02', () => {
63    let mockPostMessage = jest.fn();
64    global.postMessage = mockPostMessage;
65    hiSysEnergyAnomalyDataReceiver(data, proc);
66    hiSysEnergyPowerReceiver(data, proc);
67    hiSysEnergyStateReceiver(data, proc);
68    expect(mockPostMessage).toHaveBeenCalledTimes(3);
69  });
70  it('EnergySysEventReceiverTest03', () => {
71    let systemData = {
72      params: {
73        trafic: TraficEnum.ProtoBuffer,
74        sharedArrayBuffers: {
75          id: new Uint16Array([1, 2, 3]),
76        },
77      },
78    };
79    let systemEventvalue = {
80      'LOG_LEVEL': 2,
81      'MESSAGE': 'token=548210734912',
82      'NAME': 'backGround',
83      'PID': 4192,
84      'STATE': 1,
85      'TAG': 'DUBAI_TAG_RUNNINGLOCK_ADD',
86      'TYPE': 1,
87      'UID': 20010034
88    };
89    let systemEventvalueJson = JSON.stringify(systemEventvalue);
90    let systemProc = jest.fn((sql) => [
91      {
92        energyData: {
93          id: 1,
94          startNs: 4.4,
95          eventName: 'POWER_RUNNINGLOCK',
96          appKey: '1',
97          eventValue: systemEventvalueJson
98        }
99      },
100    ]);
101    let mockPostMessage = jest.fn();
102    global.postMessage = mockPostMessage;
103    energySysEventReceiver(systemData, systemProc);
104    expect(mockPostMessage).toHaveBeenCalledTimes(1);
105  });
106  it('EnergySysEventReceiverTest04', () => {
107    let systemData = {
108      params: {
109        trafic: TraficEnum.ProtoBuffer,
110        sharedArrayBuffers: {
111          id: new Uint16Array([1, 2, 3]),
112        },
113      },
114    };
115    let systemEventvalue = {
116      'LOG_LEVEL': 2,
117      'MESSAGE': 'token=548210734912',
118      'NAME': 'backGround',
119      'PID': 4192,
120      'STATE': 1,
121      'TAG': 'DUBAI_TAG_RUNNINGLOCK',
122      'TYPE': 1,
123      'UID': 20010034
124    };
125    let systemEventvalueJson = JSON.stringify(systemEventvalue);
126    let systemProc = jest.fn((sql) => [
127      {
128        energyData: {
129          id: 1,
130          startNs: 4.4,
131          eventName: 'POWER_RUNNINGLOCK',
132          appKey: '1',
133          eventValue: systemEventvalueJson
134        }
135      },
136    ]);
137    let mockPostMessage = jest.fn();
138    global.postMessage = mockPostMessage;
139    energySysEventReceiver(systemData, systemProc);
140    expect(mockPostMessage).toHaveBeenCalledTimes(1);
141  });
142  it('EnergySysEventReceiverTest05', () => {
143    let systemData = {
144      params: {
145        trafic: TraficEnum.ProtoBuffer,
146        sharedArrayBuffers: {
147          id: new Uint16Array([1, 2, 3]),
148        },
149      },
150    };
151    let systemEventvalue = {
152      'LOG_LEVEL': 2,
153      'MESSAGE': 'token=548210734912',
154      'NAME': 'backGround',
155      'PID': 4192,
156      'STATE': 'stop',
157      'TAG': 'DUBAI_TAG_RUNNINGLOCK',
158      'TYPE': 1,
159      'UID': 20010034
160    };
161    let systemEventvalueJson = JSON.stringify(systemEventvalue);
162    let systemProc = jest.fn((sql) => [
163      {energyData: {id: 1, startNs: 4.4, eventName: 'GNSS_STATE', appKey: '1', eventValue: systemEventvalueJson}},
164    ]);
165    let mockPostMessage = jest.fn();
166    global.postMessage = mockPostMessage;
167    energySysEventReceiver(systemData, systemProc);
168    expect(mockPostMessage).toHaveBeenCalledTimes(1);
169  });
170  it('EnergySysEventReceiverTest06', () => {
171    let systemData = {
172      params: {
173        trafic: TraficEnum.ProtoBuffer,
174        sharedArrayBuffers: {
175          id: new Uint16Array([1, 2, 3]),
176        },
177      },
178    };
179    let systemEventvalue = {
180      'LOG_LEVEL': 2,
181      'MESSAGE': 'token=548210734912',
182      'NAME': 'backGround',
183      'PID': 4192,
184      'STATE': 'stop',
185      'TAG': 'DUBAI_TAG_RUNNINGLOCK',
186      'TYPE': 1,
187      'UID': 20010034
188    };
189    let systemEventvalueJson = JSON.stringify(systemEventvalue);
190    let systemProc = jest.fn((sql) => [
191      {energyData: {id: 1, startNs: 4.4, eventName: 'GNSS_STATE', appKey: '1', eventValue: systemEventvalueJson}},
192    ]);
193    let mockPostMessage = jest.fn();
194    global.postMessage = mockPostMessage;
195    energySysEventReceiver(systemData, systemProc);
196    expect(mockPostMessage).toHaveBeenCalledTimes(1);
197  });
198  it('EnergySysEventReceiverTest07', () => {
199    let systemData = {
200      params: {
201        trafic: TraficEnum.ProtoBuffer,
202        sharedArrayBuffers: {
203          id: new Uint16Array([1, 2, 3]),
204        },
205      },
206    };
207    let systemEventvalue = {
208      'LOG_LEVEL': 2,
209      'MESSAGE': 'token=548210734912',
210      'NAME': 'WORK_START',
211      'PID': 4192,
212      'STATE': 'stop',
213      'TAG': 'DUBAI_TAG_RUNNINGLOCK',
214      'TYPE': 1,
215      'UID': 20010034
216    };
217    let systemEventvalueJson = JSON.stringify(systemEventvalue);
218    let systemProc = jest.fn((sql) => [
219      {energyData: {id: 1, startNs: 4.4, eventName: 'WORK_START', appKey: '1', eventValue: systemEventvalueJson}},
220    ]);
221    let mockPostMessage = jest.fn();
222    global.postMessage = mockPostMessage;
223    energySysEventReceiver(systemData, systemProc);
224    expect(mockPostMessage).toHaveBeenCalledTimes(1);
225  });
226});