1 /*
2  * Copyright (c) 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 <iostream>
17 #include <osal_mem.h>
18 #include "hdf_sbuf.h"
19 #include <cmath>
20 #include <cstdio>
21 #include <unistd.h>
22 #include <gtest/gtest.h>
23 #include "idevmgr_hdi.h"
24 #include <securec.h>
25 #include "hdf_base.h"
26 #include "hdf_log.h"
27 #include "osal_time.h"
28 #ifdef HDF_DRIVERS_INTERFACE_GEOFENCE_ENABLE
29 #include "v2_0/igeofence_interface.h"
30 #include "geofence_callback_impl.h"
31 
32 using namespace OHOS::HDI::Location::Geofence::V2_0;
33 #endif
34 using namespace std;
35 using namespace testing::ext;
36 
37 namespace {
38 #ifdef HDF_DRIVERS_INTERFACE_GEOFENCE_ENABLE
39 sptr<IGeofenceInterface> g_igeofenceHci = nullptr;
40 #endif
41 } // namespace
42 
43 class LocationGeofenceAdditionalTest : public testing::Test {
44 public:
45     static void SetUpTestCase();
46     static void TearDownTestCase();
47     void SetUp();
48     void TearDown();
49 };
50 
51 #ifdef HDF_DRIVERS_INTERFACE_GEOFENCE_ENABLE
ReportGeofenceAvailability(bool isAvailable)52 int32_t GeofenceCallbackImpl::ReportGeofenceAvailability(bool isAvailable)
53 {
54     (void)isAvailable;
55     return HDF_SUCCESS;
56 }
57 
ReportGeofenceEvent(int32_t fenceIndex, const LocationInfo &location, GeofenceEvent event, int64_t timestamp)58 int32_t GeofenceCallbackImpl::ReportGeofenceEvent(int32_t fenceIndex, const LocationInfo &location, GeofenceEvent event,
59                                                   int64_t timestamp)
60 {
61     (void)fenceIndex;
62     (void)location;
63     (void)event;
64     (void)timestamp;
65     return HDF_SUCCESS;
66 }
67 
ReportGeofenceOperateResult(int32_t fenceIndex, GeofenceOperateType type, GeofenceOperateResult result)68 int32_t GeofenceCallbackImpl::ReportGeofenceOperateResult(int32_t fenceIndex, GeofenceOperateType type,
69                                                           GeofenceOperateResult result)
70 {
71     (void)fenceIndex;
72     (void)type;
73     (void)result;
74     return HDF_SUCCESS;
75 }
76 #endif
77 
SetUpTestCase()78 void LocationGeofenceAdditionalTest::SetUpTestCase()
79 {
80 #ifdef HDF_DRIVERS_INTERFACE_GEOFENCE_ENABLE
81     auto devmgr = HDI::DeviceManager::V1_0::IDeviceManager::Get();
82     if (devmgr == nullptr) {
83         printf("fail to get devmgr.\n");
84         return;
85     }
86     if (devmgr->LoadDevice("gnss_interface_service") != 0) {
87         printf("Load gnss service failed!\n");
88         return;
89     }
90     if (devmgr->LoadDevice("agnss_interface_service") != 0) {
91         printf("Load agnss service failed!\n");
92         return;
93     }
94     if (devmgr->LoadDevice("geofence_interface_service") != 0) {
95         printf("Load geofence service failed!\n");
96         return;
97     }
98     g_igeofenceHci = IGeofenceInterface::Get();
99 #endif
100 }
101 
TearDownTestCase()102 void LocationGeofenceAdditionalTest::TearDownTestCase()
103 {
104 #ifdef HDF_DRIVERS_INTERFACE_GEOFENCE_ENABLE
105     auto devmgr = HDI::DeviceManager::V1_0::IDeviceManager::Get();
106     if (devmgr == nullptr) {
107         printf("fail to get devmgr.\n");
108         return;
109     }
110     if (devmgr->UnloadDevice("gnss_interface_service") != 0) {
111         printf("Load gnss service failed!\n");
112         return;
113     }
114     if (devmgr->UnloadDevice("agnss_interface_service") != 0) {
115         printf("Load agnss service failed!\n");
116         return;
117     }
118     if (devmgr->UnloadDevice("geofence_interface_service") != 0) {
119         printf("Load geofence service failed!\n");
120         return;
121     }
122 #endif
123 }
124 
SetUp()125 void LocationGeofenceAdditionalTest::SetUp() {}
126 
TearDown()127 void LocationGeofenceAdditionalTest::TearDown() {}
128 
129 /**
130  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_0200
131  * @tc.name  : testAddGnssGeofence001
132  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
133  */
134 #ifdef HDF_DRIVERS_INTERFACE_GEOFENCE_ENABLE
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence001, Function | MediumTest | Level1)135 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence001, Function | MediumTest | Level1)
136 {
137     GeofenceInfo fence;
138     fence.fenceIndex = 1;
139     fence.latitude = 1.00;
140     fence.longitude = 1.00;
141     fence.radius = 1.00;
142     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
143     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
144     EXPECT_EQ(HDF_SUCCESS, ret);
145 }
146 
147 /**
148  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_0300
149  * @tc.name  : testAddGnssGeofence002
150  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED 100times.
151  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence002, Function | MediumTest | Level1)152 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence002, Function | MediumTest | Level1)
153 {
154     int32_t ret = 0;
155     GeofenceInfo fence;
156     fence.fenceIndex = 1;
157     fence.latitude = 1.00;
158     fence.longitude = 1.00;
159     fence.radius = 1.00;
160     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
161     for (int i = 0; i < 100; i++) {
162         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
163         EXPECT_EQ(HDF_SUCCESS, ret);
164     }
165 }
166 
167 /**
168  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_0400
169  * @tc.name  : testAddGnssGeofence003
170  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
171  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence003, Function | MediumTest | Level1)172 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence003, Function | MediumTest | Level1)
173 {
174     GeofenceInfo fence;
175     fence.fenceIndex = 1;
176     fence.latitude = 180.00;
177     fence.longitude = 1.00;
178     fence.radius = 1.00;
179     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
180     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
181     EXPECT_EQ(HDF_SUCCESS, ret);
182 }
183 
184 /**
185  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_0500
186  * @tc.name  : testAddGnssGeofence004
187  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
188  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence004, Function | MediumTest | Level1)189 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence004, Function | MediumTest | Level1)
190 {
191     GeofenceInfo fence;
192     fence.fenceIndex = 1;
193     fence.latitude = 180.00;
194     fence.longitude = 1.00;
195     fence.radius = 1.00;
196     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
197     int32_t ret = 0;
198     for (int i = 0; i < 100; i++) {
199         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
200         EXPECT_EQ(HDF_SUCCESS, ret);
201     }
202 }
203 
204 /**
205  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_0600
206  * @tc.name  : testAddGnssGeofence005
207  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
208  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence005, Function | MediumTest | Level1)209 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence005, Function | MediumTest | Level1)
210 {
211     GeofenceInfo fence;
212     fence.fenceIndex = 1;
213     fence.latitude = 1.00;
214     fence.longitude = 180.00;
215     fence.radius = 1.00;
216     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
217     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
218     EXPECT_EQ(HDF_SUCCESS, ret);
219 }
220 
221 /**
222  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_0700
223  * @tc.name  : testAddGnssGeofence006
224  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
225  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence006, Function | MediumTest | Level1)226 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence006, Function | MediumTest | Level1)
227 {
228     GeofenceInfo fence;
229     fence.fenceIndex = 1;
230     fence.latitude = 1.00;
231     fence.longitude = 180.00;
232     fence.radius = 1.00;
233     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
234     int32_t ret = 0;
235     for (int i = 0; i < 100; i++) {
236         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
237         EXPECT_EQ(HDF_SUCCESS, ret);
238     }
239 }
240 
241 /**
242  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_0800
243  * @tc.name  : testAddGnssGeofence007
244  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
245  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence007, Function | MediumTest | Level1)246 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence007, Function | MediumTest | Level1)
247 {
248     GeofenceInfo fence;
249     fence.fenceIndex = 1;
250     fence.latitude = 180.00;
251     fence.longitude = 180.00;
252     fence.radius = 1.00;
253     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
254     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
255     EXPECT_EQ(HDF_SUCCESS, ret);
256 }
257 
258 /**
259  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_0900
260  * @tc.name  : testAddGnssGeofence008
261  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
262  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence008, Function | MediumTest | Level1)263 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence008, Function | MediumTest | Level1)
264 {
265     GeofenceInfo fence;
266     fence.fenceIndex = 1;
267     fence.latitude = 180.00;
268     fence.longitude = 180.00;
269     fence.radius = 1.00;
270     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
271     int32_t ret = 0;
272     for (int i = 0; i < 100; i++) {
273         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
274         EXPECT_EQ(HDF_SUCCESS, ret);
275     }
276 }
277 
278 /**
279  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_1000
280  * @tc.name  : testAddGnssGeofence009
281  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
282  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence009, Function | MediumTest | Level1)283 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence009, Function | MediumTest | Level1)
284 {
285     GeofenceInfo fence;
286     fence.fenceIndex = 1;
287     fence.latitude = 180.00;
288     fence.longitude = 180.00;
289     fence.radius = 180.00;
290     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
291     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
292     EXPECT_EQ(HDF_SUCCESS, ret);
293 }
294 
295 /**
296  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_1100
297  * @tc.name  : testAddGnssGeofence010
298  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
299  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence010, Function | MediumTest | Level1)300 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence010, Function | MediumTest | Level1)
301 {
302     GeofenceInfo fence;
303     fence.fenceIndex = 1;
304     fence.latitude = 1.00;
305     fence.longitude = 1.00;
306     fence.radius = 1.00;
307     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
308     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
309     EXPECT_EQ(HDF_SUCCESS, ret);
310 }
311 
312 /**
313  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_1200
314  * @tc.name  : testAddGnssGeofence011
315  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED 100times.
316  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence011, Function | MediumTest | Level1)317 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence011, Function | MediumTest | Level1)
318 {
319     int32_t ret = 0;
320     GeofenceInfo fence;
321     fence.fenceIndex = 1;
322     fence.latitude = 1.00;
323     fence.longitude = 1.00;
324     fence.radius = 1.00;
325     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
326     for (int i = 0; i < 100; i++) {
327         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
328         EXPECT_EQ(HDF_SUCCESS, ret);
329     }
330 }
331 
332 /**
333  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_1300
334  * @tc.name  : testAddGnssGeofence012
335  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
336  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence012, Function | MediumTest | Level1)337 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence012, Function | MediumTest | Level1)
338 {
339     GeofenceInfo fence;
340     fence.fenceIndex = 1;
341     fence.latitude = 180.00;
342     fence.longitude = 1.00;
343     fence.radius = 1.00;
344     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
345     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
346     EXPECT_EQ(HDF_SUCCESS, ret);
347 }
348 
349 /**
350  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_1400
351  * @tc.name  : testAddGnssGeofence013
352  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
353  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence013, Function | MediumTest | Level1)354 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence013, Function | MediumTest | Level1)
355 {
356     GeofenceInfo fence;
357     fence.fenceIndex = 1;
358     fence.latitude = 180.00;
359     fence.longitude = 1.00;
360     fence.radius = 1.00;
361     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
362     int32_t ret = 0;
363     for (int i = 0; i < 100; i++) {
364         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
365         EXPECT_EQ(HDF_SUCCESS, ret);
366     }
367 }
368 
369 /**
370  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_1500
371  * @tc.name  : testAddGnssGeofence014
372  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
373  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence014, Function | MediumTest | Level1)374 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence014, Function | MediumTest | Level1)
375 {
376     GeofenceInfo fence;
377     fence.fenceIndex = 1;
378     fence.latitude = 1.00;
379     fence.longitude = 180.00;
380     fence.radius = 1.00;
381     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
382     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
383     EXPECT_EQ(HDF_SUCCESS, ret);
384 }
385 
386 /**
387  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_1600
388  * @tc.name  : testAddGnssGeofence015
389  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
390  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence015, Function | MediumTest | Level1)391 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence015, Function | MediumTest | Level1)
392 {
393     GeofenceInfo fence;
394     fence.fenceIndex = 1;
395     fence.latitude = 1.00;
396     fence.longitude = 180.00;
397     fence.radius = 1.00;
398     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
399     int32_t ret = 0;
400     for (int i = 0; i < 100; i++) {
401         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
402         EXPECT_EQ(HDF_SUCCESS, ret);
403     }
404 }
405 
406 /**
407  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_1700
408  * @tc.name  : testAddGnssGeofence016
409  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
410  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence016, Function | MediumTest | Level1)411 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence016, Function | MediumTest | Level1)
412 {
413     GeofenceInfo fence;
414     fence.fenceIndex = 1;
415     fence.latitude = 180.00;
416     fence.longitude = 180.00;
417     fence.radius = 1.00;
418     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
419     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
420     EXPECT_EQ(HDF_SUCCESS, ret);
421 }
422 
423 /**
424  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_1800
425  * @tc.name  : testAddGnssGeofence017
426  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
427  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence017, Function | MediumTest | Level1)428 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence017, Function | MediumTest | Level1)
429 {
430     GeofenceInfo fence;
431     fence.fenceIndex = 1;
432     fence.latitude = 180.00;
433     fence.longitude = 180.00;
434     fence.radius = 1.00;
435     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
436     int32_t ret = 0;
437     for (int i = 0; i < 100; i++) {
438         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
439         EXPECT_EQ(HDF_SUCCESS, ret);
440     }
441 }
442 
443 /**
444  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_1900
445  * @tc.name  : testAddGnssGeofence018
446  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_ENTERED.
447  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence018, Function | MediumTest | Level1)448 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence018, Function | MediumTest | Level1)
449 {
450     GeofenceInfo fence;
451     fence.fenceIndex = 1;
452     fence.latitude = 180.00;
453     fence.longitude = 180.00;
454     fence.radius = 180.00;
455     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_ENTERED;
456     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
457     EXPECT_EQ(HDF_SUCCESS, ret);
458 }
459 
460 /**
461  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_2000
462  * @tc.name  : testAddGnssGeofence019
463  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_EXITED.
464  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence019, Function | MediumTest | Level1)465 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence019, Function | MediumTest | Level1)
466 {
467     GeofenceInfo fence;
468     fence.fenceIndex = 1;
469     fence.latitude = 1.00;
470     fence.longitude = 1.00;
471     fence.radius = 1.00;
472     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_EXITED;
473     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
474     EXPECT_EQ(HDF_SUCCESS, ret);
475 }
476 
477 /**
478  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_2100
479  * @tc.name  : testAddGnssGeofence020
480  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_EXITED 100times.
481  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence020, Function | MediumTest | Level1)482 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence020, Function | MediumTest | Level1)
483 {
484     int32_t ret = 0;
485     GeofenceInfo fence;
486     fence.fenceIndex = 1;
487     fence.latitude = 1.00;
488     fence.longitude = 1.00;
489     fence.radius = 1.00;
490     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_EXITED;
491     for (int i = 0; i < 100; i++) {
492         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
493         EXPECT_EQ(HDF_SUCCESS, ret);
494     }
495 }
496 
497 /**
498  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_2200
499  * @tc.name  : testAddGnssGeofence021
500  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_EXITED.
501  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence021, Function | MediumTest | Level1)502 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence021, Function | MediumTest | Level1)
503 {
504     GeofenceInfo fence;
505     fence.fenceIndex = 1;
506     fence.latitude = 180.00;
507     fence.longitude = 1.00;
508     fence.radius = 1.00;
509     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_EXITED;
510     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
511     EXPECT_EQ(HDF_SUCCESS, ret);
512 }
513 
514 /**
515  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_2300
516  * @tc.name  : testAddGnssGeofence022
517  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_EXITED.
518  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence022, Function | MediumTest | Level1)519 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence022, Function | MediumTest | Level1)
520 {
521     GeofenceInfo fence;
522     fence.fenceIndex = 1;
523     fence.latitude = 180.00;
524     fence.longitude = 1.00;
525     fence.radius = 1.00;
526     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_EXITED;
527     int32_t ret = 0;
528     for (int i = 0; i < 100; i++) {
529         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
530         EXPECT_EQ(HDF_SUCCESS, ret);
531     }
532 }
533 
534 /**
535  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_2400
536  * @tc.name  : testAddGnssGeofence023
537  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_EXITED.
538  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence023, Function | MediumTest | Level1)539 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence023, Function | MediumTest | Level1)
540 {
541     GeofenceInfo fence;
542     fence.fenceIndex = 1;
543     fence.latitude = 1.00;
544     fence.longitude = 180.00;
545     fence.radius = 1.00;
546     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_EXITED;
547     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
548     EXPECT_EQ(HDF_SUCCESS, ret);
549 }
550 
551 /**
552  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_2500
553  * @tc.name  : testAddGnssGeofence024
554  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_EXITED.
555  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence024, Function | MediumTest | Level1)556 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence024, Function | MediumTest | Level1)
557 {
558     GeofenceInfo fence;
559     fence.fenceIndex = 1;
560     fence.latitude = 1.00;
561     fence.longitude = 180.00;
562     fence.radius = 1.00;
563     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_EXITED;
564     int32_t ret = 0;
565     for (int i = 0; i < 100; i++) {
566         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
567         EXPECT_EQ(HDF_SUCCESS, ret);
568     }
569 }
570 
571 /**
572  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_2600
573  * @tc.name  : testAddGnssGeofence025
574  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_EXITED.
575  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence025, Function | MediumTest | Level1)576 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence025, Function | MediumTest | Level1)
577 {
578     GeofenceInfo fence;
579     fence.fenceIndex = 1;
580     fence.latitude = 180.00;
581     fence.longitude = 180.00;
582     fence.radius = 1.00;
583     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_EXITED;
584     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
585     EXPECT_EQ(HDF_SUCCESS, ret);
586 }
587 
588 /**
589  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_2700
590  * @tc.name  : testAddGnssGeofence026
591  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_EXITED.
592  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence026, Function | MediumTest | Level1)593 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence026, Function | MediumTest | Level1)
594 {
595     GeofenceInfo fence;
596     fence.fenceIndex = 1;
597     fence.latitude = 180.00;
598     fence.longitude = 180.00;
599     fence.radius = 1.00;
600     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_EXITED;
601     int32_t ret = 0;
602     for (int i = 0; i < 100; i++) {
603         ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
604         EXPECT_EQ(HDF_SUCCESS, ret);
605     }
606 }
607 
608 /**
609  * @tc.number: SUB_Location_Geofence_AddGnssGeofence_2800
610  * @tc.name  : testAddGnssGeofence027
611  * @tc.desc  : Call function AddGnssGeofence with GeofenceEvent as GEOFENCE_EVENT_EXITED.
612  */
HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence027, Function | MediumTest | Level1)613 HWTEST_F(LocationGeofenceAdditionalTest, testAddGnssGeofence027, Function | MediumTest | Level1)
614 {
615     GeofenceInfo fence;
616     fence.fenceIndex = 1;
617     fence.latitude = 180.00;
618     fence.longitude = 180.00;
619     fence.radius = 180.00;
620     GeofenceEvent geoevent = GeofenceEvent::GEOFENCE_EVENT_EXITED;
621     int32_t ret = g_igeofenceHci->AddGnssGeofence(fence, geoevent);
622     EXPECT_EQ(HDF_SUCCESS, ret);
623 }
624 
625 /**
626  * @tc.number: SUB_Location_Geofence_DeleteGnssGeofence_0200
627  * @tc.name  : testDeleteGnssGeofence001
628  * @tc.desc  : Call function DeleteGnssGeofence with fenceIndex as 5 100times.
629  */
HWTEST_F(LocationGeofenceAdditionalTest, testDeleteGnssGeofence001, Function | MediumTest | Level1)630 HWTEST_F(LocationGeofenceAdditionalTest, testDeleteGnssGeofence001, Function | MediumTest | Level1)
631 {
632     int fenceIndex = 5;
633     int32_t ret = 0;
634     for (int i = 0; i < 100; i++) {
635         ret = g_igeofenceHci->DeleteGnssGeofence(fenceIndex);
636         EXPECT_EQ(HDF_SUCCESS, ret);
637     }
638 }
639 
640 /**
641  * @tc.number: SUB_Location_Geofence_DeleteGnssGeofence_0300
642  * @tc.name  : testDeleteGnssGeofence002
643  * @tc.desc  : Call function DeleteGnssGeofence with fenceIndex as 0.
644  */
HWTEST_F(LocationGeofenceAdditionalTest, testDeleteGnssGeofence002, Function | MediumTest | Level1)645 HWTEST_F(LocationGeofenceAdditionalTest, testDeleteGnssGeofence002, Function | MediumTest | Level1)
646 {
647     int fenceIndex = 0;
648     int32_t ret = g_igeofenceHci->DeleteGnssGeofence(fenceIndex);
649     EXPECT_EQ(HDF_SUCCESS, ret);
650 }
651 
652 /**
653  * @tc.number: SUB_Location_Geofence_SetGeofenceCallback_0200
654  * @tc.name  : testSetGeofenceCallback001
655  * @tc.desc  : Call function SetGeofenceCallback 100times.
656  */
HWTEST_F(LocationGeofenceAdditionalTest, testSetGeofenceCallback001, Function | MediumTest | Level1)657 HWTEST_F(LocationGeofenceAdditionalTest, testSetGeofenceCallback001, Function | MediumTest | Level1)
658 {
659     int32_t ret = 0;
660     sptr<IGeofenceCallback> geo_callback = new (std::nothrow) GeofenceCallbackImpl();
661     if (geo_callback == nullptr) {
662         ASSERT_NE(nullptr, geo_callback);
663         return;
664     }
665     for (int i = 0; i < 100; i++) {
666         ret = g_igeofenceHci->SetGeofenceCallback(geo_callback);
667         EXPECT_EQ(HDF_SUCCESS, ret);
668     }
669 }
670 #endif