1 /*
2  * Copyright (c) 2022-2023 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 
16 #include <cstdio>
17 #include <gtest/gtest.h>
18 
19 #include "accesstoken_kit.h"
20 
21 #include "devicestatus_common.h"
22 #include "devicestatus_msdp_client_impl.h"
23 #include "devicestatus_msdp_mock.h"
24 #include "fi_log.h"
25 #include "sensor_data_callback.h"
26 
27 #undef LOG_TAG
28 #define LOG_TAG "DeviceStatusDatahubTest"
29 
30 namespace OHOS {
31 namespace Msdp {
32 namespace DeviceStatus {
33 using namespace testing::ext;
34 
35 class DeviceStatusDatahubTest : public testing::Test {
36 public:
37     static void SetUpTestCase();
38     static void TearDownTestCase();
39     void SetUp();
40     void TearDown();
41 };
42 
SetUpTestCase()43 void DeviceStatusDatahubTest::SetUpTestCase()
44 {
45     SENSOR_DATA_CB.Init();
46 }
47 
TearDownTestCase()48 void DeviceStatusDatahubTest::TearDownTestCase() {}
49 
SetUp()50 void DeviceStatusDatahubTest::SetUp() {}
51 
TearDown()52 void DeviceStatusDatahubTest::TearDown() {}
53 
SensorAccelCallbackData(int32_t sensorTypeId,AccelData * data)54 void SensorAccelCallbackData(int32_t sensorTypeId, AccelData* data)
55 {
56     GTEST_LOG_(INFO) << sensorTypeId;
57 }
58 
59 /**
60  * @tc.name: DeviceStatusDataCallbackTest
61  * @tc.desc: test devicestatus Callback in Algorithm
62  * @tc.type: FUNC
63  */
64 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest001, TestSize.Level1)
65 {
66     CALL_TEST_DEBUG;
67     using SensorCallback = std::function<void(int32_t, AccelData*)>;
68     SensorCallback callback = SensorAccelCallbackData;
69     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
70     bool ret = SENSOR_DATA_CB.SubscribeSensorEvent(sensorTypeId, callback);
71     ASSERT_TRUE(ret);
72     ret = SENSOR_DATA_CB.UnsubscribeSensorEvent(sensorTypeId, callback);
73     ASSERT_TRUE(ret);
74 }
75 
76 /**
77  * @tc.name: DeviceStatusDataCallbackTest
78  * @tc.desc: test devicestatus Callback in Algorithm
79  * @tc.type: FUNC
80  */
81 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest002, TestSize.Level1)
82 {
83     CALL_TEST_DEBUG;
84     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
85     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
86     ASSERT_TRUE(ret);
87     AccelData data;
88     data.x = 10;
89     data.y = 12;
90     data.z = 163;
91     ret = SENSOR_DATA_CB.PushData(sensorTypeId, reinterpret_cast<uint8_t*>(&data));
92     EXPECT_FALSE(ret);
93     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
94     ASSERT_TRUE(ret);
95 }
96 
97 /**
98  * @tc.name: DeviceStatusDataCallbackTest
99  * @tc.desc: test devicestatus Callback in Algorithm
100  * @tc.type: FUNC
101  */
102 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest003, TestSize.Level1)
103 {
104     CALL_TEST_DEBUG;
105     using SensorCallback = std::function<void(int32_t, AccelData*)>;
106     SensorCallback callback = SensorAccelCallbackData;
107     int32_t SENSOR_TYPE_ID_ERROR = 300;
108     bool ret = SENSOR_DATA_CB.SubscribeSensorEvent(static_cast<SensorTypeId>(SENSOR_TYPE_ID_ERROR), callback);
109     ASSERT_TRUE(ret);
110     ret = SENSOR_DATA_CB.UnsubscribeSensorEvent(static_cast<SensorTypeId>(SENSOR_TYPE_ID_ERROR), callback);
111     ASSERT_TRUE(ret);
112 }
113 
114 /**
115  * @tc.name: DeviceStatusDataCallbackTest
116  * @tc.desc: test devicestatus Callback in Algorithm
117  * @tc.type: FUNC
118  */
119 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest004, TestSize.Level1)
120 {
121     CALL_TEST_DEBUG;
122     using SensorCallback = std::function<void(int32_t, AccelData*)>;
123     SensorCallback callback = SensorAccelCallbackData;
124     int32_t SENSOR_TYPE_ID_ERROR = -1;
125     bool ret = SENSOR_DATA_CB.SubscribeSensorEvent(static_cast<SensorTypeId>(SENSOR_TYPE_ID_ERROR), callback);
126     ASSERT_TRUE(ret);
127     ret = SENSOR_DATA_CB.UnsubscribeSensorEvent(static_cast<SensorTypeId>(SENSOR_TYPE_ID_ERROR), callback);
128     ASSERT_TRUE(ret);
129 }
130 
131 /**
132  * @tc.name: DeviceStatusDataCallbackTest
133  * @tc.desc: test devicestatus Callback in Algorithm
134  * @tc.type: FUNC
135  */
136 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest005, TestSize.Level1)
137 {
138     CALL_TEST_DEBUG;
139     using SensorCallback = std::function<void(int32_t, AccelData*)>;
140     SensorCallback callback;
141     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
142     bool ret = SENSOR_DATA_CB.SubscribeSensorEvent(sensorTypeId, callback);
143     ASSERT_TRUE(ret);
144     ret = SENSOR_DATA_CB.UnsubscribeSensorEvent(sensorTypeId, callback);
145     ASSERT_TRUE(ret);
146 }
147 
148 /**
149  * @tc.name: DeviceStatusDataCallbackTest
150  * @tc.desc: test devicestatus Callback in Algorithm
151  * @tc.type: FUNC
152  */
153 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest006, TestSize.Level1)
154 {
155     CALL_TEST_DEBUG;
156     using SensorCallback = std::function<void(int32_t, AccelData*)>;
157     SensorCallback callback = nullptr;
158     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
159     bool ret = SENSOR_DATA_CB.SubscribeSensorEvent(sensorTypeId, callback);
160     ASSERT_TRUE(ret);
161     ret = SENSOR_DATA_CB.UnsubscribeSensorEvent(sensorTypeId, callback);
162     ASSERT_TRUE(ret);
163 }
164 
165 /**
166  * @tc.name: DeviceStatusDataCallbackTest
167  * @tc.desc: test devicestatus Callback in Algorithm
168  * @tc.type: FUNC
169  */
170 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest007, TestSize.Level1)
171 {
172     CALL_TEST_DEBUG;
173     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
174     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
175     ASSERT_TRUE(ret);
176     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
177     ASSERT_TRUE(ret);
178 }
179 
180 /**
181  * @tc.name: DeviceStatusDataCallbackTest
182  * @tc.desc: test devicestatus Callback in Algorithm
183  * @tc.type: FUNC
184  */
185 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest008, TestSize.Level1)
186 {
187     CALL_TEST_DEBUG;
188     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
189     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
190     ASSERT_TRUE(ret);
191     int32_t sensorTypeIdt = SENSOR_TYPE_ID_TEMPERATURE;
192     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeIdt);
193     EXPECT_FALSE(ret);
194     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
195     ASSERT_TRUE(ret);
196 }
197 
198 /**
199  * @tc.name: DeviceStatusDataCallbackTest
200  * @tc.desc: test devicestatus Callback in Algorithm
201  * @tc.type: FUNC
202  */
203 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest009, TestSize.Level1)
204 {
205     CALL_TEST_DEBUG;
206     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
207     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
208     ASSERT_TRUE(ret);
209     int32_t SENSOR_TYPE_ID_ERROR = 300;
210     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(static_cast<SensorTypeId>(SENSOR_TYPE_ID_ERROR));
211     EXPECT_FALSE(ret);
212     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
213     ASSERT_TRUE(ret);
214 }
215 
216 /**
217  * @tc.name: DeviceStatusDataCallbackTest
218  * @tc.desc: test devicestatus Callback in Algorithm
219  * @tc.type: FUNC
220  */
221 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest010, TestSize.Level1)
222 {
223     CALL_TEST_DEBUG;
224     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
225     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
226     ASSERT_TRUE(ret);
227     int32_t SENSOR_TYPE_ID_ERROR = -1;
228     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(static_cast<SensorTypeId>(SENSOR_TYPE_ID_ERROR));
229     EXPECT_FALSE(ret);
230     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
231     ASSERT_TRUE(ret);
232 }
233 
234 /**
235  * @tc.name: DeviceStatusDataCallbackTest
236  * @tc.desc: test devicestatus Callback in Algorithm
237  * @tc.type: FUNC
238  */
239 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest011, TestSize.Level1)
240 {
241     CALL_TEST_DEBUG;
242     int32_t sensorTypeId = SENSOR_TYPE_ID_TEMPERATURE;
243     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
244     EXPECT_FALSE(ret);
245     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
246     EXPECT_FALSE(ret);
247 }
248 
249 /**
250  * @tc.name: DeviceStatusDataCallbackTest
251  * @tc.desc: test devicestatus Callback in Algorithm
252  * @tc.type: FUNC
253  */
254 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest012, TestSize.Level1)
255 {
256     CALL_TEST_DEBUG;
257     int32_t SENSOR_TYPE_ID_ERROR = 300;
258     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(static_cast<SensorTypeId>(SENSOR_TYPE_ID_ERROR));
259     EXPECT_FALSE(ret);
260     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(static_cast<SensorTypeId>(SENSOR_TYPE_ID_ERROR));
261     EXPECT_FALSE(ret);
262 }
263 
264 /**
265  * @tc.name: DeviceStatusDataCallbackTest
266  * @tc.desc: test devicestatus Callback in Algorithm
267  * @tc.type: FUNC
268  */
269 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest013, TestSize.Level1)
270 {
271     CALL_TEST_DEBUG;
272     int32_t SENSOR_TYPE_ID_ERROR = -1;
273     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(static_cast<SensorTypeId>(SENSOR_TYPE_ID_ERROR));
274     EXPECT_FALSE(ret);
275     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(static_cast<SensorTypeId>(SENSOR_TYPE_ID_ERROR));
276     EXPECT_FALSE(ret);
277 }
278 
279 /**
280  * @tc.name: DeviceStatusDataCallbackTest
281  * @tc.desc: test devicestatus Callback in Algorithm
282  * @tc.type: FUNC
283  */
284 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest014, TestSize.Level1)
285 {
286     CALL_TEST_DEBUG;
287     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
288     bool ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
289     EXPECT_FALSE(ret);
290 }
291 
292 /**
293  * @tc.name: DeviceStatusDataCallbackTest
294  * @tc.desc: test devicestatus Callback in Algorithm
295  * @tc.type: FUNC
296  */
297 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest015, TestSize.Level1)
298 {
299     CALL_TEST_DEBUG;
300     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
301     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
302     ASSERT_TRUE(ret);
303     AccelData data;
304     data.x = 10;
305     data.y = 12;
306     data.z = 15;
307     ret = SENSOR_DATA_CB.PushData(sensorTypeId, reinterpret_cast<uint8_t*>(&data));
308     ASSERT_TRUE(ret);
309     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
310     ASSERT_TRUE(ret);
311 }
312 
313 /**
314  * @tc.name: DeviceStatusDataCallbackTest
315  * @tc.desc: test devicestatus Callback in Algorithm
316  * @tc.type: FUNC
317  */
318 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest016, TestSize.Level1)
319 {
320     CALL_TEST_DEBUG;
321     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
322     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
323     ASSERT_TRUE(ret);
324     AccelData data;
325     data.x = -10;
326     data.y = -12;
327     data.z = -15;
328     ret = SENSOR_DATA_CB.PushData(sensorTypeId, reinterpret_cast<uint8_t*>(&data));
329     ASSERT_TRUE(ret);
330     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
331     ASSERT_TRUE(ret);
332 }
333 
334 /**
335  * @tc.name: DeviceStatusDataCallbackTest
336  * @tc.desc: test devicestatus Callback in Algorithm
337  * @tc.type: FUNC
338  */
339 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest017, TestSize.Level1)
340 {
341     CALL_TEST_DEBUG;
342     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
343     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
344     ASSERT_TRUE(ret);
345     AccelData data;
346     data.x = 163;
347     data.y = 12;
348     data.z = 15;
349     ret = SENSOR_DATA_CB.PushData(sensorTypeId, reinterpret_cast<uint8_t*>(&data));
350     EXPECT_FALSE(ret);
351     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
352     ASSERT_TRUE(ret);
353 }
354 
355 /**
356  * @tc.name: DeviceStatusDataCallbackTest
357  * @tc.desc: test devicestatus Callback in Algorithm
358  * @tc.type: FUNC
359  */
360 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest018, TestSize.Level1)
361 {
362     CALL_TEST_DEBUG;
363     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
364     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
365     ASSERT_TRUE(ret);
366     AccelData data;
367     data.x = -163;
368     data.y = -12;
369     data.z = -15;
370     ret = SENSOR_DATA_CB.PushData(sensorTypeId, reinterpret_cast<uint8_t*>(&data));
371     EXPECT_FALSE(ret);
372     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
373     ASSERT_TRUE(ret);
374 }
375 
376 /**
377  * @tc.name: DeviceStatusDataCallbackTest
378  * @tc.desc: test devicestatus Callback in Algorithm
379  * @tc.type: FUNC
380  */
381 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest019, TestSize.Level1)
382 {
383     CALL_TEST_DEBUG;
384     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
385     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
386     ASSERT_TRUE(ret);
387     AccelData data;
388     data.x = 10;
389     data.y = 163;
390     data.z = 15;
391     ret = SENSOR_DATA_CB.PushData(sensorTypeId, reinterpret_cast<uint8_t*>(&data));
392     EXPECT_FALSE(ret);
393     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
394     ASSERT_TRUE(ret);
395 }
396 
397 /**
398  * @tc.name: DeviceStatusDataCallbackTest
399  * @tc.desc: test devicestatus Callback in Algorithm
400  * @tc.type: FUNC
401  */
402 HWTEST_F(DeviceStatusDatahubTest, DeviceStatusDatahubTest020, TestSize.Level1)
403 {
404     CALL_TEST_DEBUG;
405     int32_t sensorTypeId = SENSOR_TYPE_ID_ACCELEROMETER;
406     bool ret = SENSOR_DATA_CB.RegisterCallbackSensor(sensorTypeId);
407     ASSERT_TRUE(ret);
408     AccelData data;
409     data.x = -10;
410     data.y = -163;
411     data.z = -15;
412     ret = SENSOR_DATA_CB.PushData(sensorTypeId, reinterpret_cast<uint8_t*>(&data));
413     EXPECT_FALSE(ret);
414     ret = SENSOR_DATA_CB.UnregisterCallbackSensor(sensorTypeId);
415     ASSERT_TRUE(ret);
416 }
417 } // namespace DeviceStatus
418 } // namespace Msdp
419 } // namespace OHOS
420