1/*
2 * Copyright (c) 2024 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 "gtest/gtest.h"
17#include "location.h"
18#include "SharedData.h"
19#define private public
20#include "VirtualLocation.h"
21
22namespace {
23    struct LocSuccessData {
24        LocationData data;
25    };
26
27    TEST(GeoLocationTest, GetGeoLocationTypeTest)
28    {
29        EXPECT_EQ(std::string(GetGeoLocationType()), "gps");
30    }
31
32    TEST(GeoLocationTest, GetSupportedGeoCoordTypesTest)
33    {
34        EXPECT_EQ(std::string(GetSupportedGeoCoordTypes()), "wgs84");
35    }
36
37    void LocDataUpdateCallback(const int8_t *data, uint32_t len)
38    {
39        (void)data;
40        (void)len;
41    }
42
43    TEST(GeoLocationTest, GetGeoLocationTest)
44    {
45        int32_t ret = GetGeoLocation(nullptr, nullptr, nullptr, 0);
46        EXPECT_EQ(ret, -1); // -1 is expect return value
47        int32_t ret1 = GetGeoLocation(LocDataUpdateCallback, nullptr, nullptr, 0);
48        EXPECT_EQ(ret1, 0); // 0 is expect return value
49    }
50
51    TEST(GeoLocationTest, SubGeoLocationTest)
52    {
53        int32_t ret = SubGeoLocation(LocDataUpdateCallback);
54        EXPECT_EQ(ret, 0); // 0 is expect return value
55    }
56
57    TEST(GeoLocationTest, UnSubGeoLocationTest)
58    {
59        UnSubGeoLocation(LocDataUpdateCallback);
60        EXPECT_FALSE(VirtualLocation::GetInstance().isSubsribe);
61    }
62
63    TEST(GeoLocationTest, DestroyGeoLocationTest)
64    {
65        DestroyGeoLocation(LocDataUpdateCallback);
66        EXPECT_FALSE(VirtualLocation::GetInstance().isSubsribe);
67    }
68
69    TEST(GeoLocationTest, SerializeLocDataTest)
70    {
71        int32_t ret = SerializeLocData(nullptr, 0, nullptr);
72        EXPECT_EQ(ret, -1); // -1 is expect return value
73        ret = SerializeLocData(VirtualLocation::GetInstance().GetMockPointer(), 0, nullptr);
74        EXPECT_EQ(ret, -1); // -1 is expect return value
75        uint32_t len = 1;
76        ret = SerializeLocData(VirtualLocation::GetInstance().GetMockPointer(), len, nullptr);
77        EXPECT_EQ(ret, -1); // -1 is expect return value
78        LocationData rspData;
79        ret = SerializeLocData(VirtualLocation::GetInstance().GetMockPointer(), len, &rspData);
80        EXPECT_EQ(ret, 0); // 0 is expect return value
81    }
82}