/* * Copyright (C) 2024 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #define private public #define protected public #include "gtest/gtest.h" #include "common_event_manager.h" #include "common_event_support.h" #include "cellular_data_handler.h" #include "cellular_data_controller.h" #ifdef BASE_POWER_IMPROVEMENT #include "cellular_data_power_save_mode_subscriber.h" #endif namespace OHOS { namespace Telephony { using namespace testing::ext; class CellularDataHandlerTest : public testing::Test { public: static void SetUpTestCase() {} static void TearDownTestCase() {} void SetUp() {} void TearDown() {} }; /** * @tc.number HandleUpdateNetInfo_001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleUpdateNetInfo_001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); auto netInfo = std::make_shared(); auto event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_DATA_CALL_LIST_CHANGED, netInfo); cellularDataHandler->HandleUpdateNetInfo(event); EXPECT_EQ(cellularDataHandler->connectionManager_, nullptr); EXPECT_EQ(cellularDataHandler->apnManager_, nullptr); } /** * @tc.number HandleUpdateNetInfo_002 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleUpdateNetInfo_002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto netInfo = std::make_shared(); auto event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_DATA_CALL_LIST_CHANGED); cellularDataHandler->HandleUpdateNetInfo(event); EXPECT_NE(cellularDataHandler->connectionManager_, nullptr); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); EXPECT_EQ(event->GetSharedObject(), nullptr); } /** * @tc.number HandleUpdateNetInfo_003 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleUpdateNetInfo_003, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto netInfo = std::make_shared(); netInfo->flag = DATA_CONTEXT_ROLE_DEFAULT_ID; auto event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_DATA_CALL_LIST_CHANGED, netInfo); cellularDataHandler->HandleUpdateNetInfo(event); EXPECT_NE(cellularDataHandler->connectionManager_, nullptr); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); EXPECT_NE(event->GetSharedObject(), nullptr); sptr apnHolder = cellularDataHandler->apnManager_->GetApnHolder( cellularDataHandler->apnManager_->FindApnNameByApnId(netInfo->flag)); EXPECT_NE(apnHolder, nullptr); EXPECT_EQ(apnHolder->GetApnState(), PROFILE_STATE_IDLE); } /** * @tc.number HandleUpdateNetInfo_004 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleUpdateNetInfo_004, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto netInfo = std::make_shared(); netInfo->flag = DATA_CONTEXT_ROLE_DEFAULT_ID; sptr apnHolder = cellularDataHandler->apnManager_->GetApnHolder( cellularDataHandler->apnManager_->FindApnNameByApnId(netInfo->flag)); EXPECT_NE(apnHolder, nullptr); apnHolder->SetApnState(PROFILE_STATE_CONNECTED); auto event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_DATA_CALL_LIST_CHANGED, netInfo); cellularDataHandler->HandleUpdateNetInfo(event); EXPECT_NE(cellularDataHandler->connectionManager_, nullptr); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); EXPECT_NE(event->GetSharedObject(), nullptr); EXPECT_EQ(apnHolder->GetApnState(), PROFILE_STATE_CONNECTED); auto stateMachine = cellularDataHandler->connectionManager_->GetActiveConnectionByCid(netInfo->cid); EXPECT_EQ(stateMachine, nullptr); } /** * @tc.number HandleUpdateNetInfo_005 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleUpdateNetInfo_005, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto netInfo = std::make_shared(); netInfo->flag = DATA_CONTEXT_ROLE_DEFAULT_ID; netInfo->cid = 100; sptr apnHolder = cellularDataHandler->apnManager_->GetApnHolder( cellularDataHandler->apnManager_->FindApnNameByApnId(netInfo->flag)); EXPECT_NE(apnHolder, nullptr); apnHolder->SetApnState(PROFILE_STATE_CONNECTED); auto connectionManager = std::make_shared(0); EXPECT_NE(connectionManager, nullptr); connectionManager->Init(); auto sm = std::make_shared( connectionManager, std::make_shared("CellularDataHandlerTest")); sm->cid_ = 100; cellularDataHandler->connectionManager_->AddActiveConnectionByCid(sm); auto event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_DATA_CALL_LIST_CHANGED, netInfo); cellularDataHandler->HandleUpdateNetInfo(event); EXPECT_NE(cellularDataHandler->connectionManager_, nullptr); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); EXPECT_NE(event->GetSharedObject(), nullptr); EXPECT_EQ(apnHolder->GetApnState(), PROFILE_STATE_CONNECTED); auto stateMachine = cellularDataHandler->connectionManager_->GetActiveConnectionByCid(netInfo->cid); EXPECT_NE(stateMachine, nullptr); } /** * @tc.number HandleUpdateNetInfo_006 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleUpdateNetInfo_006, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto netInfo = std::make_shared(); netInfo->flag = DATA_CONTEXT_ROLE_DEFAULT_ID; netInfo->cid = 100; sptr apnHolder = cellularDataHandler->apnManager_->GetApnHolder( cellularDataHandler->apnManager_->FindApnNameByApnId(netInfo->flag)); EXPECT_NE(apnHolder, nullptr); apnHolder->SetApnState(PROFILE_STATE_IDLE); cellularDataHandler->ClearConnection(apnHolder, DisConnectionReason::REASON_CLEAR_CONNECTION); EXPECT_NE(apnHolder->GetApnState(), PROFILE_STATE_DISCONNECTING); } /** * @tc.number HandleRoamingOff_001 * @tc.name test roaming off * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleRoamingOff_001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); EXPECT_NE(cellularDataHandler, nullptr); cellularDataHandler->Init(); cellularDataHandler->SetCellularDataRoamingEnabled(true); auto event = AppExecFwk::InnerEvent::Get(0); cellularDataHandler->RoamingStateOff(event); } /** * @tc.number HandleRoamingOff_002 * @tc.name test roaming off * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleRoamingOff_002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); EXPECT_NE(cellularDataHandler, nullptr); cellularDataHandler->Init(); cellularDataHandler->SetCellularDataRoamingEnabled(false); auto event = AppExecFwk::InnerEvent::Get(0); cellularDataHandler->RoamingStateOff(event); } /** * @tc.number HandleEstablishAllApnsIfConnectable_001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleEstablishAllApnsIfConnectable_001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); AppExecFwk::InnerEvent::Pointer msgEvent = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_ESTABLISH_ALL_APNS_IF_CONNECTABLE); cellularDataHandler->HandleEstablishAllApnsIfConnectable(msgEvent); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); } /** * @tc.number HandleSimEvent_001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleSimEvent_001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); AppExecFwk::InnerEvent::Pointer nullEvent(nullptr, nullptr); cellularDataHandler->HandleSimEvent(nullEvent); auto event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_DATA_CALL_LIST_CHANGED, 0); cellularDataHandler->HandleSimEvent(event); EXPECT_NE(cellularDataHandler->connectionManager_, nullptr); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); } /** * @tc.number HandleSimEvent_002 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleSimEvent_002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_SIM_STATE_CHANGE, 1); cellularDataHandler->HandleSimEvent(event); EXPECT_NE(cellularDataHandler->slotId_, event->GetParam()); } /** * @tc.number HandleSimEvent_003 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleSimEvent_003, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_SIM_STATE_CHANGE, 0); cellularDataHandler->HandleSimEvent(event); EXPECT_EQ(event->GetInnerEventId(), RadioEvent::RADIO_SIM_STATE_CHANGE); } /** * @tc.number HandleSimEvent_004 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleSimEvent_004, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_SIM_RECORDS_LOADED, 0); cellularDataHandler->HandleSimEvent(event); EXPECT_EQ(event->GetInnerEventId(), RadioEvent::RADIO_SIM_RECORDS_LOADED); } /** * @tc.number HandleSimEvent_005 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleSimEvent_005, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_NV_REFRESH_FINISHED, 0); cellularDataHandler->HandleSimEvent(event); EXPECT_EQ(event->GetInnerEventId(), RadioEvent::RADIO_NV_REFRESH_FINISHED); } /** * @tc.number HandleSimEvent_006 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleSimEvent_006, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_SIM_ACCOUNT_LOADED, 0); cellularDataHandler->HandleSimEvent(event); EXPECT_EQ(event->GetInnerEventId(), RadioEvent::RADIO_SIM_ACCOUNT_LOADED); } /** * @tc.number HandleSimEvent_007 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleSimEvent_007, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_NV_REFRESH_FINISHED, 0); cellularDataHandler->HandleSimEvent(event); EXPECT_EQ(event->GetInnerEventId(), RadioEvent::RADIO_NV_REFRESH_FINISHED); } /** * @tc.number HandleSimEvent_008 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleSimEvent_008, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_NV_REFRESH_FINISHED, 1); cellularDataHandler->HandleSimEvent(event); EXPECT_EQ(event->GetInnerEventId(), RadioEvent::RADIO_NV_REFRESH_FINISHED); } /** * @tc.number ClearConnectionsOnUpdateApns_001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, ClearConnectionsOnUpdateApns_001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->ClearConnectionsOnUpdateApns(DisConnectionReason::REASON_RETRY_CONNECTION); EXPECT_EQ(cellularDataHandler->apnManager_, nullptr); } /** * @tc.number ClearConnectionsOnUpdateApns_002 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, ClearConnectionsOnUpdateApns_002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); cellularDataHandler->ClearConnectionsOnUpdateApns(DisConnectionReason::REASON_RETRY_CONNECTION); EXPECT_NE(cellularDataHandler->connectionManager_, nullptr); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); cellularDataHandler->apnManager_->allApnItem_.clear(); cellularDataHandler->ClearConnectionsOnUpdateApns(DisConnectionReason::REASON_RETRY_CONNECTION); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); std::vector> allApnItem; sptr defaultApnItem = ApnItem::MakeDefaultApn(DATA_CONTEXT_ROLE_DEFAULT); allApnItem.push_back(defaultApnItem); cellularDataHandler->apnManager_->allApnItem_ = allApnItem; EXPECT_NE(cellularDataHandler->apnManager_->GetRilAttachApn(), nullptr); cellularDataHandler->ClearConnectionsOnUpdateApns(DisConnectionReason::REASON_RETRY_CONNECTION); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); } /** * @tc.number SetCellularDataRoamingEnabledTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, SetCellularDataRoamingEnabledTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); bool dataRoamingEnabled = true; EXPECT_EQ(cellularDataHandler->SetCellularDataRoamingEnabled(dataRoamingEnabled), TELEPHONY_ERR_LOCAL_PTR_NULL); cellularDataHandler->Init(); auto event = AppExecFwk::InnerEvent::Get(0); cellularDataHandler->RadioPsConnectionAttached(event); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); cellularDataHandler->RoamingStateOn(event); cellularDataHandler->RoamingStateOff(event); EXPECT_NE(cellularDataHandler->dataSwitchSettings_, nullptr); cellularDataHandler->incallDataStateMachine_ = cellularDataHandler->CreateIncallDataStateMachine(0); EXPECT_FALSE(cellularDataHandler->SetDataPermittedForMms(true)); } /** * @tc.number AttemptEstablishDataConnectionTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, AttemptEstablishDataConnectionTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); std::shared_ptr cellularMachine = nullptr; cellularDataHandler->connectionManager_->GetAllConnectionMachine().push_back(cellularMachine); EXPECT_EQ(cellularDataHandler->FindIdleCellularDataConnection(), nullptr); } /** * @tc.number AttemptEstablishDataConnectionTest002 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, AttemptEstablishDataConnectionTest002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); auto connectionManager = std::make_shared(0); std::shared_ptr cellularMachine = std::make_shared( connectionManager, nullptr); cellularDataHandler->connectionManager_ = connectionManager; cellularDataHandler->connectionManager_->GetAllConnectionMachine().push_back(cellularMachine); EXPECT_EQ(cellularDataHandler->FindIdleCellularDataConnection(), nullptr); cellularDataHandler->Init(); EXPECT_EQ(cellularDataHandler->FindIdleCellularDataConnection(), nullptr); } /** * @tc.number EstablishDataConnectionTest002 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, EstablishDataConnectionTest002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); sptr apnItem = ApnItem::MakeDefaultApn(DATA_CONTEXT_ROLE_DEFAULT); sptr apnHolder = std::make_unique("default", static_cast(0)).release(); apnHolder->retryPolicy_.matchedApns_.push_back(apnItem); EXPECT_NE(apnHolder->GetNextRetryApn(), nullptr); EXPECT_TRUE(cellularDataHandler->EstablishDataConnection(apnHolder, 0)); apnHolder->apnType_ = DATA_CONTEXT_ROLE_DUN; EXPECT_TRUE(cellularDataHandler->EstablishDataConnection(apnHolder, 0)); apnHolder->apnType_ = DATA_CONTEXT_ROLE_MMS; EXPECT_TRUE(cellularDataHandler->EstablishDataConnection(apnHolder, 0)); } /** * @tc.number DisconnectDataCompleteTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, DisconnectDataCompleteTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); auto event = AppExecFwk::InnerEvent::Get(0); cellularDataHandler->DisconnectDataComplete(event); EXPECT_NE(event, nullptr); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); EXPECT_NE(cellularDataHandler->connectionManager_, nullptr); } /** * @tc.number UpdatePhysicalConnectionStateTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, UpdatePhysicalConnectionStateTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->physicalConnectionActiveState_ = false; cellularDataHandler->UpdatePhysicalConnectionState(false); EXPECT_TRUE(cellularDataHandler->physicalConnectionActiveState_); cellularDataHandler->UpdatePhysicalConnectionState(true); EXPECT_FALSE(cellularDataHandler->physicalConnectionActiveState_); cellularDataHandler->physicalConnectionActiveState_ = true; cellularDataHandler->UpdatePhysicalConnectionState(false); EXPECT_TRUE(cellularDataHandler->physicalConnectionActiveState_); cellularDataHandler->UpdatePhysicalConnectionState(true); EXPECT_FALSE(cellularDataHandler->physicalConnectionActiveState_); } /** * @tc.number HandleScreenStateChangedTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleScreenStateChangedTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->HandleScreenStateChanged(false); EXPECT_EQ(cellularDataHandler->connectionManager_, nullptr); cellularDataHandler->Init(); cellularDataHandler->HandleScreenStateChanged(false); EXPECT_NE(cellularDataHandler->connectionManager_, nullptr); } /** * @tc.number UpdateCellularDataConnectStateTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, UpdateCellularDataConnectStateTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); cellularDataHandler->incallDataStateMachine_ = cellularDataHandler->CreateIncallDataStateMachine(0); AppExecFwk::InnerEvent::Pointer event(nullptr, nullptr); cellularDataHandler->IncallDataComplete(event); EXPECT_EQ(cellularDataHandler->incallDataStateMachine_, nullptr); cellularDataHandler->UpdateCellularDataConnectState("default"); EXPECT_EQ(cellularDataHandler->apnManager_->GetOverallDefaultApnState(), 0); cellularDataHandler->UpdateCellularDataConnectState("internal_default"); EXPECT_EQ(cellularDataHandler->apnManager_->GetOverallDefaultApnState(), 0); } /** * @tc.number HandleImsCallChangedTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HandleImsCallChangedTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); cellularDataHandler->HandleImsCallChanged(1); EXPECT_EQ(cellularDataHandler->incallDataStateMachine_, nullptr); cellularDataHandler->HandleImsCallChanged(4); EXPECT_NE(cellularDataHandler->incallDataStateMachine_, nullptr); cellularDataHandler->HandleImsCallChanged(2); EXPECT_NE(cellularDataHandler->incallDataStateMachine_->GetCallState(), 8); cellularDataHandler->HandleImsCallChanged(4); EXPECT_EQ(cellularDataHandler->incallDataStateMachine_->GetCallState(), 4); cellularDataHandler->HandleImsCallChanged(6); EXPECT_EQ(cellularDataHandler->incallDataStateMachine_->GetCallState(), 6); cellularDataHandler->HandleImsCallChanged(8); EXPECT_EQ(cellularDataHandler->incallDataStateMachine_->GetCallState(), 8); } /** * @tc.number PsDataRatChangedTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, PsDataRatChangedTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); AppExecFwk::InnerEvent::Pointer event(nullptr, nullptr); cellularDataHandler->PsDataRatChanged(event); cellularDataHandler->dataSwitchSettings_->userDataOn_ = false; EXPECT_FALSE(cellularDataHandler->dataSwitchSettings_->IsUserDataOn()); } /** * @tc.number SetPolicyDataOnTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, SetPolicyDataOnTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); cellularDataHandler->dataSwitchSettings_->policyDataOn_ = false; cellularDataHandler->SetPolicyDataOn(true); EXPECT_TRUE(cellularDataHandler->dataSwitchSettings_->IsUserDataOn()); cellularDataHandler->dataSwitchSettings_->policyDataOn_ = true; cellularDataHandler->SetPolicyDataOn(false); EXPECT_FALSE(cellularDataHandler->dataSwitchSettings_->policyDataOn_); } /** * @tc.number SetRilAttachApnTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, SetRilAttachApnTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); sptr attachApn = ApnItem::MakeDefaultApn(DATA_CONTEXT_ROLE_DEFAULT); cellularDataHandler->apnManager_->allApnItem_.push_back(attachApn); cellularDataHandler->SetRilAttachApn(); } /** * @tc.number HasAnyHigherPriorityConnectionTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HasAnyHigherPriorityConnectionTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); sptr sortApnHolder = std::make_unique("default", static_cast(0)).release(); sortApnHolder->priority_ = 1; sortApnHolder->dataCallEnabled_ = true; sortApnHolder->apnState_ = ApnProfileState::PROFILE_STATE_CONNECTED; cellularDataHandler->apnManager_->sortedApnHolders_.push_back(sortApnHolder); sptr apnHolder = std::make_unique("default", static_cast(0)).release(); apnHolder->priority_ = 0; EXPECT_NE(cellularDataHandler->apnManager_, nullptr); EXPECT_NE(cellularDataHandler->apnManager_->GetSortApnHolder().empty(), true); EXPECT_TRUE(cellularDataHandler->HasAnyHigherPriorityConnection(apnHolder)); } /** * @tc.number HasAnyHigherPriorityConnectionTest002 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HasAnyHigherPriorityConnectionTest002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); sptr sortApnHolder = std::make_unique("default", static_cast(0)).release(); sortApnHolder->priority_ = 1; sortApnHolder->dataCallEnabled_ = true; sortApnHolder->apnState_ = ApnProfileState::PROFILE_STATE_CONNECTING; cellularDataHandler->apnManager_->sortedApnHolders_.push_back(sortApnHolder); sptr apnHolder = std::make_unique("default", static_cast(0)).release(); apnHolder->priority_ = 0; EXPECT_NE(cellularDataHandler->apnManager_, nullptr); EXPECT_NE(cellularDataHandler->apnManager_->GetSortApnHolder().empty(), true); EXPECT_TRUE(cellularDataHandler->HasAnyHigherPriorityConnection(apnHolder)); } /** * @tc.number HasAnyHigherPriorityConnectionTest003 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HasAnyHigherPriorityConnectionTest003, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); sptr sortApnHolder = std::make_unique("default", static_cast(0)).release(); sortApnHolder->priority_ = 1; sortApnHolder->dataCallEnabled_ = true; sortApnHolder->apnState_ = ApnProfileState::PROFILE_STATE_DISCONNECTING; cellularDataHandler->apnManager_->sortedApnHolders_.push_back(sortApnHolder); sptr apnHolder = std::make_unique("default", static_cast(0)).release(); apnHolder->priority_ = 0; EXPECT_NE(cellularDataHandler->apnManager_, nullptr); EXPECT_NE(cellularDataHandler->apnManager_->GetSortApnHolder().empty(), true); EXPECT_TRUE(cellularDataHandler->HasAnyHigherPriorityConnection(apnHolder)); } /** * @tc.number HasInternetCapabilityTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HasInternetCapabilityTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); auto connectionManager = std::make_shared(0); std::shared_ptr cellularMachine = std::make_shared( connectionManager, nullptr); cellularMachine->capability_ = NetCap::NET_CAPABILITY_INTERNET; cellularDataHandler->connectionManager_->cidActiveConnectionMap_[0] = cellularMachine; EXPECT_NE(cellularDataHandler->connectionManager_->GetActiveConnectionByCid(0), nullptr); EXPECT_TRUE(cellularDataHandler->HasInternetCapability(0)); } /** * @tc.number HasInternetCapabilityTest002 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, HasInternetCapabilityTest002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); auto connectionManager = std::make_shared(0); std::shared_ptr cellularMachine = std::make_shared( connectionManager, nullptr); cellularMachine->capability_ = NetCap::NET_CAPABILITY_MMS; cellularDataHandler->connectionManager_->cidActiveConnectionMap_[0] = cellularMachine; EXPECT_NE(cellularDataHandler->connectionManager_->GetActiveConnectionByCid(0), nullptr); EXPECT_FALSE(cellularDataHandler->HasInternetCapability(0)); } /** * @tc.number ChangeConnectionForDsdsTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, ChangeConnectionForDsdsTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); cellularDataHandler->ChangeConnectionForDsds(true); EXPECT_TRUE(cellularDataHandler->dataSwitchSettings_->internalDataOn_); } /** * @tc.number GetDataConnApnAttrTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, GetDataConnApnAttrTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); sptr apnHolder1 = std::make_unique("default", static_cast(0)).release(); apnHolder1->apnItem_ = nullptr; apnHolder1->dataCallEnabled_ = true; cellularDataHandler->apnManager_->apnHolders_.push_back(apnHolder1); sptr apnHolder2 = std::make_unique("default", static_cast(0)).release(); sptr apnItem = ApnItem::MakeDefaultApn(DATA_CONTEXT_ROLE_DEFAULT); apnItem->attr_.isEdited_ = true; apnHolder2->apnItem_ = apnItem; apnHolder2->dataCallEnabled_ = true; cellularDataHandler->apnManager_->apnHolders_.push_back(apnHolder2); ApnItem::Attribute apnAttr; apnAttr.isEdited_ = false; cellularDataHandler->GetDataConnApnAttr(apnAttr); EXPECT_TRUE(apnAttr.isEdited_); } /** * @tc.number GetDataConnIpTypeTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, GetDataConnIpTypeTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); cellularDataHandler->Init(); sptr apnHolder1 = std::make_unique("default", static_cast(0)).release(); apnHolder1->cellularDataStateMachine_ = nullptr; apnHolder1->dataCallEnabled_ = true; cellularDataHandler->apnManager_->apnHolders_.push_back(apnHolder1); sptr apnHolder2 = std::make_unique("default", static_cast(0)).release(); auto connectionManager = std::make_shared(0); std::shared_ptr cellularMachine = std::make_shared( connectionManager, nullptr); cellularMachine->ipType_ = "IPV4"; apnHolder2->cellularDataStateMachine_ = cellularMachine; apnHolder2->dataCallEnabled_ = true; cellularDataHandler->apnManager_->apnHolders_.push_back(apnHolder2); cellularDataHandler->GetDataConnIpType(); EXPECT_EQ(cellularDataHandler->GetDataConnIpType(), "IPV4"); } /** * @tc.number CheckForCompatibleDataConnectionTest001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, CheckForCompatibleDataConnectionTest001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(1); sptr apnHolder = std::make_unique("default", static_cast(0)).release(); apnHolder->apnType_ = DATA_CONTEXT_ROLE_DUN; EXPECT_EQ(cellularDataHandler->CheckForCompatibleDataConnection(apnHolder), nullptr); cellularDataHandler->Init(); EXPECT_EQ(cellularDataHandler->CheckForCompatibleDataConnection(apnHolder), nullptr); } /** * @tc.number UpdateNetworkInfo_001 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, UpdateNetworkInfo_001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); EXPECT_EQ(cellularDataHandler->connectionManager_, nullptr); EXPECT_FALSE(cellularDataHandler->UpdateNetworkInfo()); } /** * @tc.number UpdateNetworkInfo_002 * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, UpdateNetworkInfo_002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); EXPECT_NE(cellularDataHandler->connectionManager_, nullptr); EXPECT_TRUE(cellularDataHandler->UpdateNetworkInfo()); } /** * @tc.number Telephony_MsgRequest * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, Telephony_MsgRequest, Function | MediumTest | Level1) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); NetRequest request1; request1.capability = NetManagerStandard::NET_CAPABILITY_INTERNET; EXPECT_TRUE(cellularDataHandler->RequestNet(request1)); NetRequest request2; request2.capability = NetManagerStandard::NET_CAPABILITY_INTERNET; EXPECT_TRUE(cellularDataHandler->RequestNet(request2)); sleep(2); } /** * @tc.number Telephony_ConnectIfNeed * @tc.name test error branch * @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, Telephony_ConnectIfNeed, Function | MediumTest | Level1) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); NetRequest request1; request1.capability = NetManagerStandard::NET_CAPABILITY_INTERNET; EXPECT_TRUE(cellularDataHandler->RequestNet(request1)); auto event1 = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_REQUEST_NETWORK, TYPE_REQUEST_NET); auto apnHolder = cellularDataHandler->apnManager_->FindApnHolderById(ApnManager::FindApnIdByCapability(request1.capability)); } HWTEST_F(CellularDataHandlerTest, Telephony_CellularDataHandler_003, Function | MediumTest | Level1) { CellularDataController controller {0}; controller.Init(); ApnActivateReportInfo info1; ApnActivateReportInfo info2; EXPECT_TRUE(controller.GetDefaultActReportInfo(info1)); EXPECT_TRUE(controller.GetInternalActReportInfo(info2)); controller.cellularDataHandler_ = nullptr; EXPECT_FALSE(controller.GetDefaultActReportInfo(info1)); EXPECT_FALSE(controller.GetInternalActReportInfo(info2)); } HWTEST_F(CellularDataHandlerTest, DataConnCompleteUpdateStateTest001, Function | MediumTest | Level1) { int32_t slotId = 0; auto cellularDataHandler = std::make_shared(slotId); std::string apnType = DATA_CONTEXT_ROLE_MMS; sptr apnHolder = new ApnHolder(apnType, slotId); apnHolder->cellularDataStateMachine_ = nullptr; auto resultInfo = std::make_shared(); cellularDataHandler->connectionManager_ = nullptr; cellularDataHandler->physicalConnectionActiveState_ = true; cellularDataHandler->incallDataStateMachine_ = nullptr; cellularDataHandler->DataConnCompleteUpdateState(apnHolder, resultInfo); EXPECT_FALSE(cellularDataHandler->isRilApnAttached_); std::shared_ptr cdConnectionManager = nullptr; std::shared_ptr telEventHandler = nullptr; apnHolder->cellularDataStateMachine_ = std::make_shared (cdConnectionManager, std::move(telEventHandler)); apnHolder->cellularDataStateMachine_->netLinkInfo_ = new NetLinkInfo(); apnHolder->cellularDataStateMachine_->netSupplierInfo_ = nullptr; cellularDataHandler->apnManager_ = std::make_unique().release(); cellularDataHandler->apnManager_->allApnItem_.clear(); cellularDataHandler->connectionManager_ = std::make_shared(slotId); cellularDataHandler->physicalConnectionActiveState_ = false; cellularDataHandler->incallDataStateMachine_ = cellularDataHandler->CreateIncallDataStateMachine(TelCallStatus::CALL_STATUS_DIALING); apnHolder->apnType_ = DATA_CONTEXT_ROLE_DEFAULT; apnHolder->apnItem_ = new ApnItem(); cellularDataHandler->DataConnCompleteUpdateState(apnHolder, resultInfo); cellularDataHandler->apnManager_->preferId_ = 1; cellularDataHandler->apnManager_->allApnItem_.push_back(new ApnItem()); cellularDataHandler->DataConnCompleteUpdateState(apnHolder, resultInfo); EXPECT_FALSE(cellularDataHandler->isRilApnAttached_); } /** @tc.number Telephony_CreateApnItem @tc.name CreateApnItem @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, CreateApnItemTest001, Function | MediumTest | Level1) { int32_t slotId = 0; auto cellularDataHandler = std::make_shared(slotId); cellularDataHandler->apnManager_ = nullptr; cellularDataHandler->CreateApnItem(); cellularDataHandler->Init(); EXPECT_FALSE(cellularDataHandler->apnManager_ == nullptr); cellularDataHandler->CreateApnItem(); cellularDataHandler->SendEvent(CellularDataEventCode::MSG_RETRY_TO_CREATE_APN, 0, RETRY_DELAY_TIME); cellularDataHandler->CreateApnItem(); EXPECT_FALSE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_CREATE_APN)); } HWTEST_F(CellularDataHandlerTest, CreateApnItemTest002, Function | MediumTest | Level1) { int32_t slotId = 2; auto cellularDataHandler = std::make_shared(slotId); cellularDataHandler->Init(); cellularDataHandler->retryCreateApnTimes_ = 3; cellularDataHandler->CreateApnItem(); cellularDataHandler->RemoveEvent(CellularDataEventCode::MSG_RETRY_TO_CREATE_APN); cellularDataHandler->retryCreateApnTimes_ = 2; cellularDataHandler->CreateApnItem(); EXPECT_NE(cellularDataHandler->apnManager_, nullptr); } /** @tc.number Telephony_IsCellularDataEnabled @tc.name IsCellularDataEnabled @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, IsCellularDataEnabledTest001, Function | MediumTest | Level1) { int32_t slotId = 0; auto cellularDataHandler = std::make_shared(slotId); bool isDataEnabled = false; EXPECT_NE(cellularDataHandler->IsCellularDataEnabled(isDataEnabled), TELEPHONY_ERR_SUCCESS); cellularDataHandler->Init(); cellularDataHandler->dataSwitchSettings_->lastQryRet_ = -1; EXPECT_EQ(cellularDataHandler->IsCellularDataEnabled(isDataEnabled), TELEPHONY_ERR_SUCCESS); cellularDataHandler->dataSwitchSettings_->lastQryRet_ = TELEPHONY_ERR_SUCCESS; EXPECT_EQ(cellularDataHandler->IsCellularDataEnabled(isDataEnabled), TELEPHONY_ERR_SUCCESS); } /** @tc.number Telephony_CheckApnActivate @tc.name CheckApnActivate001 @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, CheckApnActivate001, Function | MediumTest | Level1) { int32_t slotId = 0; auto cellularDataHandler = std::make_shared(slotId); cellularDataHandler->Init(); cellularDataHandler->SetApnActivateStart(DATA_CONTEXT_ROLE_DEFAULT); cellularDataHandler->SetApnActivateStart(DATA_CONTEXT_ROLE_INTERNAL_DEFAULT); auto resultInfo1 = std::make_shared(); resultInfo1->flag = DATA_CONTEXT_ROLE_INTERNAL_DEFAULT_ID; resultInfo1->reason = 0; cellularDataHandler->SetApnActivateEnd(resultInfo1); auto resultInfo2 = std::make_shared(); resultInfo2->flag = DATA_CONTEXT_ROLE_INTERNAL_DEFAULT_ID; resultInfo2->reason = 1; cellularDataHandler->SetApnActivateEnd(resultInfo2); auto resultInfo3 = std::make_shared(); resultInfo3->flag = DATA_CONTEXT_ROLE_DEFAULT_ID; resultInfo3->reason = 2; cellularDataHandler->SetApnActivateEnd(resultInfo3); auto resultInfo4 = std::make_shared(); resultInfo4->flag = DATA_CONTEXT_ROLE_DEFAULT_ID; resultInfo4->reason = 2; cellularDataHandler->SetApnActivateEnd(resultInfo4); cellularDataHandler->GetApnActReportInfo(DATA_CONTEXT_ROLE_DEFAULT_ID); cellularDataHandler->GetApnActReportInfo(DATA_CONTEXT_ROLE_INTERNAL_DEFAULT_ID); int32_t listLen = 4; EXPECT_EQ(cellularDataHandler->apnActivateChrList_.size(), listLen); } /** @tc.number Telephony_CheckApnActivate002 @tc.name CheckApnActivate002 @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, CheckApnActivate002, Function | MediumTest | Level1) { int32_t slotId = 0; auto cellularDataHandler = std::make_shared(slotId); cellularDataHandler->Init(); ApnActivateInfo info1; info1.reason = 0; info1.actSuccTime = 0; info1.apnId = 1; info1.duration = 0; cellularDataHandler->apnActivateChrList_.push_back(info1); cellularDataHandler->EraseApnActivateList(); EXPECT_EQ(cellularDataHandler->apnActivateChrList_.size(), 0); } /** @tc.number Telephony_CheckMultiApnState @tc.name CheckMultiApnState001 @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, CheckMultiApnState001, Function | MediumTest | Level1) { int32_t slotId = 0; auto cellularDataHandler = std::make_shared(slotId); cellularDataHandler->Init(); sptr apnManager = cellularDataHandler->apnManager_; if (apnManager == nullptr) { EXPECT_EQ(apnManager, nullptr); } else { sptr defaultApnHolder = apnManager->GetApnHolder(DATA_CONTEXT_ROLE_DEFAULT); bool result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, false); sptr bipApnHolder = apnManager->GetApnHolder(DATA_CONTEXT_ROLE_BIP); result = cellularDataHandler->CheckMultiApnState(bipApnHolder); EXPECT_EQ(result, false); } } /** @tc.number Telephony_CheckMultiApnState @tc.name CheckMultiApnState002 @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, CheckMultiApnState002, Function | MediumTest | Level1) { int32_t slotId = 0; auto cellularDataHandler = std::make_shared(slotId); cellularDataHandler->Init(); sptr apnManager = cellularDataHandler->apnManager_; if (apnManager == nullptr) { EXPECT_EQ(apnManager, nullptr); } else { sptr defaultApnHolder = apnManager->GetApnHolder(DATA_CONTEXT_ROLE_DEFAULT); sptr bipApnHolder = apnManager->GetApnHolder(DATA_CONTEXT_ROLE_BIP); bipApnHolder->SetApnState(PROFILE_STATE_DISCONNECTING); bool result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, true); bipApnHolder->SetApnState(PROFILE_STATE_CONNECTED); result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, true); bipApnHolder->SetApnState(PROFILE_STATE_CONNECTING); result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, true); bipApnHolder->SetApnState(PROFILE_STATE_IDLE); result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, false); cellularDataHandler->apnManager_ = nullptr; result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, false); } } /** @tc.number Telephony_CheckMultiApnState @tc.name CheckMultiApnState003 @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, CheckMultiApnState003, Function | MediumTest | Level1) { int32_t slotId = 0; auto cellularDataHandler = std::make_shared(slotId); cellularDataHandler->Init(); sptr apnManager = cellularDataHandler->apnManager_; if (apnManager == nullptr) { EXPECT_EQ(apnManager, nullptr); } else { sptr defaultApnHolder = apnManager->GetApnHolder(DATA_CONTEXT_ROLE_DEFAULT); cellularDataHandler->apnManager_ = nullptr; bool result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, false); } } /** @tc.number Telephony_CheckMultiApnState @tc.name CheckMultiApnState004 @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, CheckMultiApnState004, Function | MediumTest | Level1) { int32_t slotId = 0; auto cellularDataHandler = std::make_shared(slotId); cellularDataHandler->Init(); sptr apnManager = cellularDataHandler->apnManager_; if (apnManager == nullptr) { EXPECT_EQ(apnManager, nullptr); } else { sptr defaultApnHolder = apnManager->GetApnHolder(DATA_CONTEXT_ROLE_DEFAULT); bool result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, false); sptr dunApnHolder = apnManager->GetApnHolder(DATA_CONTEXT_ROLE_DUN); result = cellularDataHandler->CheckMultiApnState(dunApnHolder); EXPECT_EQ(result, false); } } /** @tc.number Telephony_CheckMultiApnState @tc.name CheckMultiApnState005 @tc.desc Function test */ HWTEST_F(CellularDataHandlerTest, CheckMultiApnState005, Function | MediumTest | Level1) { int32_t slotId = 0; auto cellularDataHandler = std::make_shared(slotId); cellularDataHandler->Init(); sptr apnManager = cellularDataHandler->apnManager_; if (apnManager == nullptr) { EXPECT_EQ(apnManager, nullptr); } else { sptr defaultApnHolder = apnManager->GetApnHolder(DATA_CONTEXT_ROLE_DEFAULT); sptr dunApnHolder = apnManager->GetApnHolder(DATA_CONTEXT_ROLE_DUN); dunApnHolder->SetApnState(PROFILE_STATE_DISCONNECTING); bool result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, true); dunApnHolder->SetApnState(PROFILE_STATE_CONNECTED); result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, true); dunApnHolder->SetApnState(PROFILE_STATE_CONNECTING); result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, true); dunApnHolder->SetApnState(PROFILE_STATE_IDLE); result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, false); cellularDataHandler->apnManager_ = nullptr; result = cellularDataHandler->CheckMultiApnState(defaultApnHolder); EXPECT_EQ(result, false); } } HWTEST_F(CellularDataHandlerTest, HandleRetryLoadSimAccount001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); auto event0 = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT); auto event1 = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); // false false cellularDataHandler->isSimAccountLoaded_ = false; cellularDataHandler->HandleRetryLoadSimAccount(event0); EXPECT_FALSE(cellularDataHandler->isSimAccountLoaded_); // true false cellularDataHandler->SendEvent(event0, 5000); cellularDataHandler->HandleRetryLoadSimAccount(event0); EXPECT_TRUE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); cellularDataHandler->RemoveEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT); // false true cellularDataHandler->isSimAccountLoaded_ = false; cellularDataHandler->SendEvent(event1, 5000); cellularDataHandler->HandleRetryLoadSimAccount(event0); EXPECT_TRUE(cellularDataHandler->HasInnerEvent(RadioEvent::RADIO_SIM_ACCOUNT_LOADED)); cellularDataHandler->RemoveEvent(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); // true true cellularDataHandler->isSimAccountLoaded_ = true; cellularDataHandler->SendEvent(event1, 5000); cellularDataHandler->HandleRetryLoadSimAccount(event0); EXPECT_FALSE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); cellularDataHandler->RemoveEvent(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); } /** * @tc.number OnDataShareReady_001 * @tc.name Test OnDataShareReady - isSimAccountLoaded_ is false, no RADIO_SIM_ACCOUNT_LOADED event * @tc.desc Branch coverage test: should start load sim account timer */ HWTEST_F(CellularDataHandlerTest, OnDataShareReady_001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->isSimAccountLoaded_ = false; cellularDataHandler->RemoveEvent(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); cellularDataHandler->OnDataShareReady(); EXPECT_TRUE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); cellularDataHandler->StopLoadSimAccountTimer(); } /** * @tc.number OnDataShareReady_002 * @tc.name Test OnDataShareReady - isSimAccountLoaded_ is true * @tc.desc Branch coverage test: should not start load sim account timer */ HWTEST_F(CellularDataHandlerTest, OnDataShareReady_002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->isSimAccountLoaded_ = true; cellularDataHandler->RemoveEvent(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); cellularDataHandler->OnDataShareReady(); EXPECT_FALSE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); } /** * @tc.number OnDataShareReady_003 * @tc.name Test OnDataShareReady - has RADIO_SIM_ACCOUNT_LOADED event * @tc.desc Branch coverage test: should not start load sim account timer */ HWTEST_F(CellularDataHandlerTest, OnDataShareReady_003, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->isSimAccountLoaded_ = false; auto event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); cellularDataHandler->SendEvent(event, 5000); cellularDataHandler->OnDataShareReady(); EXPECT_FALSE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); cellularDataHandler->RemoveEvent(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); } /** * @tc.number StartLoadSimAccountTimer_001 * @tc.name Test StartLoadSimAccountTimer - times <= 0 * @tc.desc Branch coverage test: should return early */ HWTEST_F(CellularDataHandlerTest, StartLoadSimAccountTimer_001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->StartLoadSimAccountTimer(0); EXPECT_FALSE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); cellularDataHandler->StartLoadSimAccountTimer(-1); EXPECT_FALSE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); } /** * @tc.number StartLoadSimAccountTimer_002 * @tc.name Test StartLoadSimAccountTimer - times > 0, no existing event * @tc.desc Branch coverage test: should send event */ HWTEST_F(CellularDataHandlerTest, StartLoadSimAccountTimer_002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->StopLoadSimAccountTimer(); cellularDataHandler->StartLoadSimAccountTimer(1); EXPECT_TRUE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); cellularDataHandler->StopLoadSimAccountTimer(); } /** * @tc.number StartLoadSimAccountTimer_003 * @tc.name Test StartLoadSimAccountTimer - times > 0, has existing event * @tc.desc Branch coverage test: should not send duplicate event */ HWTEST_F(CellularDataHandlerTest, StartLoadSimAccountTimer_003, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->StartLoadSimAccountTimer(1); EXPECT_TRUE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); cellularDataHandler->StartLoadSimAccountTimer(2); EXPECT_TRUE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); cellularDataHandler->StopLoadSimAccountTimer(); } /** * @tc.number HandleRetryLoadSimAccount_002 * @tc.name Test HandleRetryLoadSimAccount - event is nullptr * @tc.desc Branch coverage test: should return early */ HWTEST_F(CellularDataHandlerTest, HandleRetryLoadSimAccount_002, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->isSimAccountLoaded_ = false; auto event = AppExecFwk::InnerEvent::Get(0); event = nullptr; cellularDataHandler->HandleRetryLoadSimAccount(event); EXPECT_FALSE(cellularDataHandler->isSimAccountLoaded_); } /** * @tc.number HandleRetryLoadSimAccount_003 * @tc.name Test HandleRetryLoadSimAccount - simId <= INVALID_SIM_ID with retry times * @tc.desc Branch coverage test: should retry with times - 1 */ HWTEST_F(CellularDataHandlerTest, HandleRetryLoadSimAccount_003, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(-1); auto event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT, 2); cellularDataHandler->isSimAccountLoaded_ = false; cellularDataHandler->RemoveEvent(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); cellularDataHandler->HandleRetryLoadSimAccount(event); EXPECT_FALSE(cellularDataHandler->isSimAccountLoaded_); } /** * @tc.number HandleRetryLoadSimAccount_004 * @tc.name Test HandleRetryLoadSimAccount - simId > INVALID_SIM_ID, isSimAccountLoaded_ is true * @tc.desc Branch coverage test: should not call HandleSimAccountLoaded */ HWTEST_F(CellularDataHandlerTest, HandleRetryLoadSimAccount_004, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(-1); auto event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT); cellularDataHandler->isSimAccountLoaded_ = true; cellularDataHandler->RemoveEvent(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); cellularDataHandler->HandleRetryLoadSimAccount(event); EXPECT_TRUE(cellularDataHandler->isSimAccountLoaded_); } /** * @tc.number HandleRetryLoadSimAccount_005 * @tc.name Test HandleRetryLoadSimAccount - simId > INVALID_SIM_ID, has RADIO_SIM_ACCOUNT_LOADED event * @tc.desc Branch coverage test: should not call HandleSimAccountLoaded */ HWTEST_F(CellularDataHandlerTest, HandleRetryLoadSimAccount_005, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(-1); auto event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT); auto simEvent = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); cellularDataHandler->isSimAccountLoaded_ = false; cellularDataHandler->SendEvent(simEvent, 5000); cellularDataHandler->HandleRetryLoadSimAccount(event); EXPECT_FALSE(cellularDataHandler->isSimAccountLoaded_); cellularDataHandler->RemoveEvent(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); } /** * @tc.number HandleRetryLoadSimAccount_006 * @tc.name Test HandleRetryLoadSimAccount - simId > INVALID_SIM_ID, has RADIO_SIM_ACCOUNT_LOADED event * @tc.desc Branch coverage test: should not call HandleSimAccountLoaded */ HWTEST_F(CellularDataHandlerTest, HandleRetryLoadSimAccount_006, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(-1); auto event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT); auto simEvent = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); cellularDataHandler->isSimAccountLoaded_ = true; cellularDataHandler->SendEvent(simEvent, 5000); cellularDataHandler->HandleRetryLoadSimAccount(event); EXPECT_TRUE(cellularDataHandler->isSimAccountLoaded_); cellularDataHandler->RemoveEvent(RadioEvent::RADIO_SIM_ACCOUNT_LOADED); } /** * @tc.number StopLoadSimAccountTimer_001 * @tc.name Test StopLoadSimAccountTimer - remove event * @tc.desc Branch coverage test: should remove MSG_RETRY_TO_LOAD_SIM_ACCOUNT event */ HWTEST_F(CellularDataHandlerTest, StopLoadSimAccountTimer_001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->StartLoadSimAccountTimer(1); EXPECT_TRUE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); cellularDataHandler->StopLoadSimAccountTimer(); EXPECT_FALSE(cellularDataHandler->HasInnerEvent(CellularDataEventCode::MSG_RETRY_TO_LOAD_SIM_ACCOUNT)); } HWTEST_F(CellularDataHandlerTest, MsgRequestNetwork001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->apnManager_ = sptr::MakeSptr(); cellularDataHandler->apnManager_->InitApnHolders(); std::unique_ptr netRequest = std::make_unique(); netRequest->capability = NetManagerStandard::NetCap::NET_CAPABILITY_INTERNET; sptr apnHolder = cellularDataHandler->apnManager_->FindApnHolderById(DATA_CONTEXT_ROLE_DEFAULT_ID); ASSERT_NE(apnHolder, nullptr); apnHolder->dataCallEnabled_ = true; AppExecFwk::InnerEvent::Pointer event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_REQUEST_NETWORK, netRequest, TYPE_RELEASE_NET); cellularDataHandler->MsgRequestNetwork(event); EXPECT_FALSE(apnHolder->dataCallEnabled_); } HWTEST_F(CellularDataHandlerTest, IsBlockSetRilAttachApn_001, Function | MediumTest | Level3) { auto cellularDataHandler = std::make_shared(0); cellularDataHandler->Init(); cellularDataHandler->lastNumeric_ = "00101"; EXPECT_FALSE(cellularDataHandler->IsBlockSetRilAttachApn()); cellularDataHandler->lastNumeric_ = "99999"; EXPECT_FALSE(cellularDataHandler->IsBlockSetRilAttachApn()); } } // namespace Telephony } // namespace OHOS