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 16#ifdef FEATURE_GNSS_SUPPORT 17#include "gnss_event_callback_test.h" 18 19#include <cstdlib> 20 21#include "gnss_event_callback.h" 22#include "accesstoken_kit.h" 23#include "message_parcel.h" 24#include "nativetoken_kit.h" 25#include "token_setproc.h" 26#include "agnss_ni_manager.h" 27#include "common_utils.h" 28#include "constant_definition.h" 29#include "location.h" 30#include "permission_manager.h" 31 32using namespace testing; 33using namespace testing::ext; 34 35namespace OHOS { 36namespace Location { 37using HDI::Location::Gnss::V2_0::IGnssCallback; 38using HDI::Location::Gnss::V2_0::LocationInfo; 39using HDI::Location::Gnss::V2_0::ConstellationCategory; 40const int32_t LOCATION_PERM_NUM = 6; 41const std::string MANAGER_SETTINGS = "ohos.permission.MANAGE_SETTINGS"; 42void GnssEventCallbackTest::SetUp() 43{ 44 MockNativePermission(); 45} 46 47void GnssEventCallbackTest::TearDown() 48{} 49 50void GnssEventCallbackTest::MockNativePermission() 51{ 52 const char *perms[] = { 53 ACCESS_LOCATION.c_str(), ACCESS_APPROXIMATELY_LOCATION.c_str(), 54 ACCESS_BACKGROUND_LOCATION.c_str(), MANAGE_SECURE_SETTINGS.c_str(), 55 MANAGER_SETTINGS.c_str(), ACCESS_CONTROL_LOCATION_SWITCH.c_str(), 56 }; 57 NativeTokenInfoParams infoInstance = { 58 .dcapsNum = 0, 59 .permsNum = LOCATION_PERM_NUM, 60 .aclsNum = 0, 61 .dcaps = nullptr, 62 .perms = perms, 63 .acls = nullptr, 64 .processName = "GnssEventCallbackTest", 65 .aplStr = "system_basic", 66 }; 67 uint64_t tokenId = GetAccessTokenId(&infoInstance); 68 SetSelfTokenID(tokenId); 69 Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo(); 70} 71 72HWTEST_F(GnssEventCallbackTest, GnssEventCallbackReportLocation001, TestSize.Level1) 73{ 74 GTEST_LOG_(INFO) 75 << "GnssEventCallbackTest, GnssEventCallbackReportLocation001, TestSize.Level1"; 76 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportLocation001 begin"); 77 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 78 EXPECT_NE(nullptr, gnssCallback); 79 LocationInfo locationInfo; 80 locationInfo.latitude = 1.0; 81 locationInfo.longitude = 2.0; 82 locationInfo.altitude = 1.0; 83 locationInfo.horizontalAccuracy = 1.0; 84 locationInfo.speed = 1.0; 85 locationInfo.bearing= 1.0; 86 locationInfo.timeForFix = 1000000000; 87 locationInfo.timeSinceBoot = 1000000000; 88 gnssCallback->ReportLocation(locationInfo); 89 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportLocation001 end"); 90} 91 92HWTEST_F(GnssEventCallbackTest, GnssEventCallbackReportGnssWorkingStatus001, TestSize.Level1) 93{ 94 GTEST_LOG_(INFO) 95 << "GnssEventCallbackTest, GnssEventCallbackReportGnssWorkingStatus001, TestSize.Level1"; 96 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportGnssWorkingStatus001 begin"); 97 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 98 EXPECT_NE(nullptr, gnssCallback); 99 GnssWorkingStatus status = HDI::Location::Gnss::V2_0::GNSS_WORKING_STATUS_NONE; 100 gnssCallback->ReportGnssWorkingStatus(status); 101 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportGnssWorkingStatus001 end"); 102} 103 104HWTEST_F(GnssEventCallbackTest, GnssEventCallbackReportGnssWorkingStatus002, TestSize.Level1) 105{ 106 GTEST_LOG_(INFO) 107 << "GnssEventCallbackTest, GnssEventCallbackReportGnssWorkingStatus002, TestSize.Level1"; 108 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportGnssWorkingStatus002 begin"); 109 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 110 EXPECT_NE(nullptr, gnssCallback); 111 GnssWorkingStatus status = HDI::Location::Gnss::V2_0::GNSS_WORKING_STATUS_NONE; 112 gnssCallback->ReportGnssWorkingStatus(status); 113 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportGnssWorkingStatus002 end"); 114} 115 116HWTEST_F(GnssEventCallbackTest, GnssEventCallbackReportNmea001, TestSize.Level1) 117{ 118 GTEST_LOG_(INFO) 119 << "GnssEventCallbackTest, GnssEventCallbackReportNmea001, TestSize.Level1"; 120 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportNmea001 begin"); 121 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 122 EXPECT_NE(nullptr, gnssCallback); 123 gnssCallback->ReportNmea(0, "nmea", 0); 124 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportNmea001 end"); 125} 126 127HWTEST_F(GnssEventCallbackTest, GnssEventCallbackReportNmea002, TestSize.Level1) 128{ 129 GTEST_LOG_(INFO) 130 << "GnssEventCallbackTest, GnssEventCallbackReportNmea002, TestSize.Level1"; 131 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportNmea002 begin"); 132 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 133 EXPECT_NE(nullptr, gnssCallback); 134 gnssCallback->ReportNmea(0, "nmea", 0); 135 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportNmea002 end"); 136} 137 138HWTEST_F(GnssEventCallbackTest, GnssEventCallbackReportGnssCapabilities001, TestSize.Level1) 139{ 140 GTEST_LOG_(INFO) 141 << "GnssEventCallbackTest, GnssEventCallbackReportGnssCapabilities001, TestSize.Level1"; 142 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportGnssCapabilities001 begin"); 143 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 144 EXPECT_NE(nullptr, gnssCallback); 145 GnssCapabilities capabilities = HDI::Location::Gnss::V2_0::GNSS_CAP_SUPPORT_MSB; 146 EXPECT_EQ(ERR_OK, gnssCallback->ReportGnssCapabilities(capabilities)); 147 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportGnssCapabilities001 end"); 148} 149 150HWTEST_F(GnssEventCallbackTest, GnssEventCallbackReportGnssCapabilities002, TestSize.Level1) 151{ 152 GTEST_LOG_(INFO) 153 << "GnssEventCallbackTest, GnssEventCallbackReportGnssCapabilities002, TestSize.Level1"; 154 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportGnssCapabilities002 begin"); 155 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 156 EXPECT_NE(nullptr, gnssCallback); 157 GnssCapabilities capabilities = HDI::Location::Gnss::V2_0::GNSS_CAP_SUPPORT_MSB; 158 EXPECT_EQ(ERR_OK, gnssCallback->ReportGnssCapabilities(capabilities)); 159 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportGnssCapabilities002 end"); 160} 161 162HWTEST_F(GnssEventCallbackTest, GnssEventCallbackReportSatelliteStatusInfo002, TestSize.Level1) 163{ 164 GTEST_LOG_(INFO) 165 << "GnssEventCallbackTest, GnssEventCallbackReportSatelliteStatusInfo002, TestSize.Level1"; 166 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportSatelliteStatusInfo002 begin"); 167 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 168 EXPECT_NE(nullptr, gnssCallback); 169 SatelliteStatusInfo statusInfo; 170 statusInfo.satellitesNumber = 0; 171 EXPECT_EQ(ERR_OK, gnssCallback->ReportSatelliteStatusInfo(statusInfo)); 172 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportSatelliteStatusInfo002 end"); 173} 174 175HWTEST_F(GnssEventCallbackTest, GnssEventCallbackReportSatelliteStatusInfo003, TestSize.Level1) 176{ 177 GTEST_LOG_(INFO) 178 << "GnssEventCallbackTest, GnssEventCallbackReportSatelliteStatusInfo003, TestSize.Level1"; 179 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportSatelliteStatusInfo003 begin"); 180 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 181 EXPECT_NE(nullptr, gnssCallback); 182 SatelliteStatusInfo statusInfo; 183 statusInfo.satellitesNumber = 1; 184 statusInfo.elevation.push_back(12); 185 statusInfo.azimuths.push_back(30); 186 statusInfo.carrierFrequencies.push_back(40); 187 statusInfo.carrierToNoiseDensitys.push_back(40); 188 statusInfo.satelliteIds.push_back(1); 189 statusInfo.constellation.push_back(static_cast<ConstellationCategory>(1)); 190 statusInfo.additionalInfo.push_back( 191 HDI::Location::Gnss::V2_0::SATELLITES_ADDITIONAL_INFO_EPHEMERIS_DATA_EXIST); 192 EXPECT_EQ(ERR_OK, gnssCallback->ReportSatelliteStatusInfo(statusInfo)); 193 LocationInfo locationInfo; 194 locationInfo.latitude = 1.0; 195 locationInfo.longitude = 2.0; 196 locationInfo.altitude = 1.0; 197 locationInfo.horizontalAccuracy = 1.0; 198 locationInfo.speed = 1.0; 199 locationInfo.bearing= 1.0; 200 locationInfo.timeForFix = 1000000000; 201 locationInfo.timeSinceBoot = 1000000000; 202 EXPECT_EQ(ERR_OK, gnssCallback->ReportLocation(locationInfo)); 203 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportSatelliteStatusInfo003 end"); 204} 205 206HWTEST_F(GnssEventCallbackTest, GnssEventCallbackRequestGnssReferenceInfo001, TestSize.Level1) 207{ 208 GTEST_LOG_(INFO) 209 << "GnssEventCallbackTest, GnssEventCallbackRequestGnssReferenceInfo001, TestSize.Level1"; 210 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackRequestGnssReferenceInfo001 begin"); 211 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 212 EXPECT_NE(nullptr, gnssCallback); 213 GnssRefInfoType type = HDI::Location::Gnss::V2_0::GNSS_REF_INFO_TIME; 214 gnssCallback->RequestGnssReferenceInfo(type); 215 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackRequestGnssReferenceInfo001 end"); 216} 217 218HWTEST_F(GnssEventCallbackTest, GnssEventCallbackRequestPredictGnssData001, TestSize.Level1) 219{ 220 GTEST_LOG_(INFO) 221 << "GnssEventCallbackTest, GnssEventCallbackRequestPredictGnssData001, TestSize.Level1"; 222 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackRequestPredictGnssData001 begin"); 223 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 224 EXPECT_NE(nullptr, gnssCallback); 225 gnssCallback->RequestPredictGnssData(); 226 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackRequestPredictGnssData001 end"); 227} 228 229HWTEST_F(GnssEventCallbackTest, GnssEventCallbackReportCachedLocation001, TestSize.Level1) 230{ 231 GTEST_LOG_(INFO) 232 << "GnssEventCallbackTest, GnssEventCallbackReportCachedLocation001, TestSize.Level1"; 233 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportCachedLocation001 begin"); 234 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 235 EXPECT_NE(nullptr, gnssCallback); 236 std::vector<LocationInfo> gnssLocations; 237 LocationInfo locationInfo; 238 locationInfo.latitude = 1.0; 239 locationInfo.longitude = 2.0; 240 locationInfo.altitude = 1.0; 241 locationInfo.horizontalAccuracy = 1.0; 242 locationInfo.speed = 1.0; 243 locationInfo.bearing= 1.0; 244 locationInfo.timeForFix = 1000000000; 245 locationInfo.timeSinceBoot = 1000000000; 246 gnssLocations.push_back(locationInfo); 247 gnssCallback->ReportCachedLocation(gnssLocations); 248 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackReportCachedLocation001 end"); 249} 250 251HWTEST_F(GnssEventCallbackTest, GnssEventCallbackRequestGnssReferenceInfo002, TestSize.Level1) 252{ 253 GTEST_LOG_(INFO) 254 << "GnssEventCallbackTest, GnssEventCallbackRequestGnssReferenceInfo002, TestSize.Level1"; 255 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackRequestGnssReferenceInfo002 begin"); 256 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 257 EXPECT_NE(nullptr, gnssCallback); 258 GnssRefInfoType type = HDI::Location::Gnss::V2_0::GNSS_REF_INFO_LOCATION; 259 gnssCallback->RequestGnssReferenceInfo(type); 260 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackRequestGnssReferenceInfo002 end"); 261} 262 263HWTEST_F(GnssEventCallbackTest, GnssEventCallbackRequestGnssReferenceInfo003, TestSize.Level1) 264{ 265 GTEST_LOG_(INFO) 266 << "GnssEventCallbackTest, GnssEventCallbackRequestGnssReferenceInfo003, TestSize.Level1"; 267 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackRequestGnssReferenceInfo003 begin"); 268 sptr<IGnssCallback> gnssCallback = new (std::nothrow) GnssEventCallback(); 269 EXPECT_NE(nullptr, gnssCallback); 270 GnssRefInfoType type = HDI::Location::Gnss::V2_0::GNSS_REF_INFO_BEST_LOCATION; 271 gnssCallback->RequestGnssReferenceInfo(type); 272 LBSLOGI(GNSS_TEST, "[GnssEventCallbackTest] GnssEventCallbackRequestGnssReferenceInfo003 end"); 273} 274 275} // namespace Location 276} // namespace OHOS 277#endif // FEATURE_GNSS_SUPPORT 278