12d43be4eSopenharmony_ci/*
22d43be4eSopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd.
32d43be4eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
42d43be4eSopenharmony_ci * you may not use this file except in compliance with the License.
52d43be4eSopenharmony_ci * You may obtain a copy of the License at
62d43be4eSopenharmony_ci *
72d43be4eSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
82d43be4eSopenharmony_ci *
92d43be4eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
102d43be4eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
112d43be4eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
122d43be4eSopenharmony_ci * See the License for the specific language governing permissions and
132d43be4eSopenharmony_ci * limitations under the License.
142d43be4eSopenharmony_ci */
152d43be4eSopenharmony_ci#define private public
162d43be4eSopenharmony_ci#define protected public
172d43be4eSopenharmony_ci
182d43be4eSopenharmony_ci#include "cellular_data_error.h"
192d43be4eSopenharmony_ci#include "cellular_data_service.h"
202d43be4eSopenharmony_ci#include "data_access_token.h"
212d43be4eSopenharmony_ci#include "data_connection_monitor.h"
222d43be4eSopenharmony_ci#include "gtest/gtest.h"
232d43be4eSopenharmony_ci#include "tel_ril_network_parcel.h"
242d43be4eSopenharmony_ci#include "traffic_management.h"
252d43be4eSopenharmony_ci
262d43be4eSopenharmony_cinamespace OHOS {
272d43be4eSopenharmony_cinamespace Telephony {
282d43be4eSopenharmony_ciusing namespace testing::ext;
292d43be4eSopenharmony_ci
302d43be4eSopenharmony_cistatic const int32_t SLEEP_TIME = 3;
312d43be4eSopenharmony_ci
322d43be4eSopenharmony_ciclass CellularDataServiceTest : public testing::Test {
332d43be4eSopenharmony_cipublic:
342d43be4eSopenharmony_ci    static void SetUpTestCase();
352d43be4eSopenharmony_ci    static void TearDownTestCase();
362d43be4eSopenharmony_ci    void SetUp();
372d43be4eSopenharmony_ci    void TearDown();
382d43be4eSopenharmony_ci    std::shared_ptr<CellularDataService> service = DelayedSingleton<CellularDataService>::GetInstance();
392d43be4eSopenharmony_ci};
402d43be4eSopenharmony_civoid CellularDataServiceTest::SetUpTestCase() {}
412d43be4eSopenharmony_ci
422d43be4eSopenharmony_civoid CellularDataServiceTest::TearDownTestCase()
432d43be4eSopenharmony_ci{
442d43be4eSopenharmony_ci    sleep(SLEEP_TIME);
452d43be4eSopenharmony_ci}
462d43be4eSopenharmony_ci
472d43be4eSopenharmony_civoid CellularDataServiceTest::SetUp() {}
482d43be4eSopenharmony_ci
492d43be4eSopenharmony_civoid CellularDataServiceTest::TearDown() {}
502d43be4eSopenharmony_ci
512d43be4eSopenharmony_ci/**
522d43be4eSopenharmony_ci * @tc.number   CellularDataService_001
532d43be4eSopenharmony_ci * @tc.name     test function branch
542d43be4eSopenharmony_ci * @tc.desc     Function test
552d43be4eSopenharmony_ci */
562d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, CellularDataService_001, TestSize.Level0)
572d43be4eSopenharmony_ci{
582d43be4eSopenharmony_ci    DataAccessToken token;
592d43be4eSopenharmony_ci    service->OnStart();
602d43be4eSopenharmony_ci    service->isInitSuccess_ = true;
612d43be4eSopenharmony_ci    bool dataEnabled = false;
622d43be4eSopenharmony_ci    bool dataRoamingEnabled = false;
632d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->IsCellularDataEnabled(dataEnabled));
642d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->EnableCellularData(false));
652d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->EnableCellularData(true));
662d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->EnableIntelligenceSwitch(false));
672d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->EnableIntelligenceSwitch(true));
682d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->GetCellularDataState());
692d43be4eSopenharmony_ci    ASSERT_EQ(static_cast<int32_t>(DisConnectionReason::REASON_CHANGE_CONNECTION),
702d43be4eSopenharmony_ci        service->GetApnState(DEFAULT_SIM_SLOT_ID, std::string()));
712d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->IsCellularDataRoamingEnabled(DEFAULT_SIM_SLOT_ID, dataRoamingEnabled));
722d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->EnableCellularDataRoaming(DEFAULT_SIM_SLOT_ID, true));
732d43be4eSopenharmony_ci    NetRequest request;
742d43be4eSopenharmony_ci    request.ident = "simId12";
752d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->RequestNet(request));
762d43be4eSopenharmony_ci    request.ident = "simId2";
772d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->ReleaseNet(request));
782d43be4eSopenharmony_ci    auto event = AppExecFwk::InnerEvent::Get(0);
792d43be4eSopenharmony_ci    service->DispatchEvent(DEFAULT_SIM_SLOT_ID, event);
802d43be4eSopenharmony_ci    ASSERT_EQ(TELEPHONY_ERR_SUCCESS, service->HandleApnChanged(DEFAULT_SIM_SLOT_ID));
812d43be4eSopenharmony_ci}
822d43be4eSopenharmony_ci
832d43be4eSopenharmony_ci/**
842d43be4eSopenharmony_ci * @tc.number   CellularDataService_002
852d43be4eSopenharmony_ci * @tc.name     test function branch
862d43be4eSopenharmony_ci * @tc.desc     Function test
872d43be4eSopenharmony_ci */
882d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, CellularDataService_002, TestSize.Level0)
892d43be4eSopenharmony_ci{
902d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->GetCellularDataFlowType());
912d43be4eSopenharmony_ci    ASSERT_EQ("default slotId: -1", service->GetStateMachineCurrentStatusDump());
922d43be4eSopenharmony_ci    service->GetFlowDataInfoDump();
932d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->StrategySwitch(DEFAULT_SIM_SLOT_ID, false));
942d43be4eSopenharmony_ci    ASSERT_EQ(TELEPHONY_ERR_SUCCESS, service->HasInternetCapability(DEFAULT_SIM_SLOT_ID, 0));
952d43be4eSopenharmony_ci    DisConnectionReason reason = DisConnectionReason::REASON_NORMAL;
962d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->ClearAllConnections(DEFAULT_SIM_SLOT_ID, reason));
972d43be4eSopenharmony_ci    ASSERT_EQ(TELEPHONY_ERR_SUCCESS, service->ChangeConnectionForDsds(DEFAULT_SIM_SLOT_ID, false));
982d43be4eSopenharmony_ci    ASSERT_EQ(TELEPHONY_ERR_SUCCESS, service->ChangeConnectionForDsds(DEFAULT_SIM_SLOT_ID, true));
992d43be4eSopenharmony_ci    ApnItem::Attribute apnAttr;
1002d43be4eSopenharmony_ci    ASSERT_NE(TELEPHONY_ERR_SUCCESS, service->GetDataConnApnAttr(DEFAULT_SIM_SLOT_ID, apnAttr));
1012d43be4eSopenharmony_ci    std::string ipType;
1022d43be4eSopenharmony_ci    ASSERT_EQ(TELEPHONY_ERR_SUCCESS, service->GetDataConnIpType(DEFAULT_SIM_SLOT_ID, ipType));
1032d43be4eSopenharmony_ci    ASSERT_EQ(TELEPHONY_ERR_SUCCESS, service->IsNeedDoRecovery(DEFAULT_SIM_SLOT_ID, true));
1042d43be4eSopenharmony_ci    uint32_t supplierId = 0;
1052d43be4eSopenharmony_ci    ASSERT_EQ(TELEPHONY_ERR_SUCCESS,
1062d43be4eSopenharmony_ci        service->GetCellularDataSupplierId(DEFAULT_SIM_SLOT_ID, NetCap::NET_CAPABILITY_INTERNET, supplierId));
1072d43be4eSopenharmony_ci    ASSERT_EQ(CELLULAR_DATA_INVALID_PARAM,
1082d43be4eSopenharmony_ci        service->GetCellularDataSupplierId(DEFAULT_SIM_SLOT_ID, NetCap::NET_CAPABILITY_END, supplierId));
1092d43be4eSopenharmony_ci    service->CorrectNetSupplierNoAvailable(DEFAULT_SIM_SLOT_ID);
1102d43be4eSopenharmony_ci    int32_t regState = -1;
1112d43be4eSopenharmony_ci    service->GetSupplierRegisterState(supplierId, regState);
1122d43be4eSopenharmony_ci    service->OnStop();
1132d43be4eSopenharmony_ci}
1142d43be4eSopenharmony_ci
1152d43be4eSopenharmony_ci/**
1162d43be4eSopenharmony_ci * @tc.number   DataConnectionMonitor_HandleScreenStateChanged_001
1172d43be4eSopenharmony_ci * @tc.name     test function branch
1182d43be4eSopenharmony_ci * @tc.desc     Function test
1192d43be4eSopenharmony_ci */
1202d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, DataConnectionMonitor_HandleScreenStateChanged_001, TestSize.Level0)
1212d43be4eSopenharmony_ci{
1222d43be4eSopenharmony_ci    std::shared_ptr<DataConnectionMonitor> dataConnectionMonitor = std::make_shared<DataConnectionMonitor>(0);
1232d43be4eSopenharmony_ci    dataConnectionMonitor->isScreenOn_ = false;
1242d43be4eSopenharmony_ci    dataConnectionMonitor->HandleScreenStateChanged(true);
1252d43be4eSopenharmony_ci    ASSERT_EQ(dataConnectionMonitor->isScreenOn_, true);
1262d43be4eSopenharmony_ci    dataConnectionMonitor->isScreenOn_ = false;
1272d43be4eSopenharmony_ci    dataConnectionMonitor->HandleScreenStateChanged(false);
1282d43be4eSopenharmony_ci    ASSERT_EQ(dataConnectionMonitor->isScreenOn_, false);
1292d43be4eSopenharmony_ci}
1302d43be4eSopenharmony_ci
1312d43be4eSopenharmony_ci/**
1322d43be4eSopenharmony_ci * @tc.number   DataConnectionMonitor_OnStallDetectionTimer_001
1332d43be4eSopenharmony_ci * @tc.name     test function branch
1342d43be4eSopenharmony_ci * @tc.desc     Function test
1352d43be4eSopenharmony_ci */
1362d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, DataConnectionMonitor_OnStallDetectionTimer_001, TestSize.Level0)
1372d43be4eSopenharmony_ci{
1382d43be4eSopenharmony_ci    std::shared_ptr<DataConnectionMonitor> dataConnectionMonitor = std::make_shared<DataConnectionMonitor>(0);
1392d43be4eSopenharmony_ci    dataConnectionMonitor->noRecvPackets_ = 20;
1402d43be4eSopenharmony_ci    dataConnectionMonitor->stallDetectionEnabled_ = true;
1412d43be4eSopenharmony_ci    dataConnectionMonitor->OnStallDetectionTimer();
1422d43be4eSopenharmony_ci    ASSERT_EQ(dataConnectionMonitor->noRecvPackets_, 20);
1432d43be4eSopenharmony_ci}
1442d43be4eSopenharmony_ci
1452d43be4eSopenharmony_ci/**
1462d43be4eSopenharmony_ci * @tc.number   DataConnectionMonitor_HandleRecovery_001
1472d43be4eSopenharmony_ci * @tc.name     test function branch
1482d43be4eSopenharmony_ci * @tc.desc     Function test
1492d43be4eSopenharmony_ci */
1502d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, DataConnectionMonitor_HandleRecovery_001, TestSize.Level0)
1512d43be4eSopenharmony_ci{
1522d43be4eSopenharmony_ci    std::shared_ptr<DataConnectionMonitor> dataConnectionMonitor = std::make_shared<DataConnectionMonitor>(0);
1532d43be4eSopenharmony_ci    dataConnectionMonitor->dataRecoveryState_ = RecoveryState::STATE_REQUEST_CONTEXT_LIST;
1542d43be4eSopenharmony_ci    dataConnectionMonitor->HandleRecovery();
1552d43be4eSopenharmony_ci    ASSERT_EQ(dataConnectionMonitor->dataRecoveryState_, RecoveryState::STATE_CLEANUP_CONNECTIONS);
1562d43be4eSopenharmony_ci    dataConnectionMonitor->dataRecoveryState_ = RecoveryState::STATE_REREGISTER_NETWORK;
1572d43be4eSopenharmony_ci    dataConnectionMonitor->HandleRecovery();
1582d43be4eSopenharmony_ci    ASSERT_EQ(dataConnectionMonitor->dataRecoveryState_, RecoveryState::STATE_RADIO_STATUS_RESTART);
1592d43be4eSopenharmony_ci    dataConnectionMonitor->dataRecoveryState_ = RecoveryState::STATE_RADIO_STATUS_RESTART;
1602d43be4eSopenharmony_ci    dataConnectionMonitor->HandleRecovery();
1612d43be4eSopenharmony_ci    ASSERT_EQ(dataConnectionMonitor->dataRecoveryState_, RecoveryState::STATE_REQUEST_CONTEXT_LIST);
1622d43be4eSopenharmony_ci}
1632d43be4eSopenharmony_ci
1642d43be4eSopenharmony_ci/**
1652d43be4eSopenharmony_ci * @tc.number   DataConnectionMonitor_EndNetStatistics_001
1662d43be4eSopenharmony_ci * @tc.name     test function branch
1672d43be4eSopenharmony_ci * @tc.desc     Function test
1682d43be4eSopenharmony_ci */
1692d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, DataConnectionMonitor_EndNetStatistics_001, TestSize.Level0)
1702d43be4eSopenharmony_ci{
1712d43be4eSopenharmony_ci    std::shared_ptr<DataConnectionMonitor> dataConnectionMonitor = std::make_shared<DataConnectionMonitor>(0);
1722d43be4eSopenharmony_ci    dataConnectionMonitor->dataFlowType_ = CellDataFlowType::DATA_FLOW_TYPE_DOWN;
1732d43be4eSopenharmony_ci    dataConnectionMonitor->EndNetStatistics();
1742d43be4eSopenharmony_ci    ASSERT_EQ(dataConnectionMonitor->dataFlowType_, CellDataFlowType::DATA_FLOW_TYPE_NONE);
1752d43be4eSopenharmony_ci}
1762d43be4eSopenharmony_ci
1772d43be4eSopenharmony_ci/**
1782d43be4eSopenharmony_ci * @tc.number   DataConnectionMonitor_UpdateNetTrafficState_001
1792d43be4eSopenharmony_ci * @tc.name     test function branch
1802d43be4eSopenharmony_ci * @tc.desc     Function test
1812d43be4eSopenharmony_ci */
1822d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, DataConnectionMonitor_UpdateNetTrafficState_001, TestSize.Level0)
1832d43be4eSopenharmony_ci{
1842d43be4eSopenharmony_ci    std::shared_ptr<DataConnectionMonitor> dataConnectionMonitor = std::make_shared<DataConnectionMonitor>(0);
1852d43be4eSopenharmony_ci    dataConnectionMonitor->updateNetStat_ = true;
1862d43be4eSopenharmony_ci    dataConnectionMonitor->UpdateNetTrafficState();
1872d43be4eSopenharmony_ci    std::shared_ptr<PreferredNetworkTypeInfo> preferredTypeInfo = std::make_shared<PreferredNetworkTypeInfo>();
1882d43be4eSopenharmony_ci    auto event = AppExecFwk::InnerEvent::Get(0, preferredTypeInfo);
1892d43be4eSopenharmony_ci    dataConnectionMonitor->SetPreferredNetworkPara(event);
1902d43be4eSopenharmony_ci    ASSERT_EQ(dataConnectionMonitor->dataFlowType_, CellDataFlowType::DATA_FLOW_TYPE_NONE);
1912d43be4eSopenharmony_ci}
1922d43be4eSopenharmony_ci
1932d43be4eSopenharmony_ci/**
1942d43be4eSopenharmony_ci * @tc.number   DataConnectionMonitor_UpdateDataFlowType_001
1952d43be4eSopenharmony_ci * @tc.name     test function branch
1962d43be4eSopenharmony_ci * @tc.desc     Function test
1972d43be4eSopenharmony_ci */
1982d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, DataConnectionMonitor_UpdateDataFlowType_001, TestSize.Level0)
1992d43be4eSopenharmony_ci{
2002d43be4eSopenharmony_ci    std::shared_ptr<DataConnectionMonitor> dataConnectionMonitor = std::make_shared<DataConnectionMonitor>(0);
2012d43be4eSopenharmony_ci    dataConnectionMonitor->dataFlowType_ = CellDataFlowType::DATA_FLOW_TYPE_DOWN;
2022d43be4eSopenharmony_ci    dataConnectionMonitor->trafficManager_->sendPackets_ = 200;
2032d43be4eSopenharmony_ci    dataConnectionMonitor->trafficManager_->recvPackets_ = 100;
2042d43be4eSopenharmony_ci    dataConnectionMonitor->UpdateDataFlowType();
2052d43be4eSopenharmony_ci    ASSERT_EQ(static_cast<int32_t>(dataConnectionMonitor->dataFlowType_),
2062d43be4eSopenharmony_ci        static_cast<int32_t>(CellDataFlowType::DATA_FLOW_TYPE_NONE));
2072d43be4eSopenharmony_ci}
2082d43be4eSopenharmony_ci
2092d43be4eSopenharmony_ci/**
2102d43be4eSopenharmony_ci * @tc.number   DataConnectionMonitor_SetDataFlowType_001
2112d43be4eSopenharmony_ci * @tc.name     test function branch
2122d43be4eSopenharmony_ci * @tc.desc     Function test
2132d43be4eSopenharmony_ci */
2142d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, DataConnectionMonitor_SetDataFlowType_001, TestSize.Level0)
2152d43be4eSopenharmony_ci{
2162d43be4eSopenharmony_ci    std::shared_ptr<DataConnectionMonitor> dataConnectionMonitor = std::make_shared<DataConnectionMonitor>(0);
2172d43be4eSopenharmony_ci    auto event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_RUN_MONITOR_TASK);
2182d43be4eSopenharmony_ci    dataConnectionMonitor->ProcessEvent(event);
2192d43be4eSopenharmony_ci    event = AppExecFwk::InnerEvent::Get(CellularDataEventCode::MSG_STALL_DETECTION_EVENT_ID);
2202d43be4eSopenharmony_ci    dataConnectionMonitor->ProcessEvent(event);
2212d43be4eSopenharmony_ci    event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_DATA_CALL_LIST_CHANGED);
2222d43be4eSopenharmony_ci    dataConnectionMonitor->ProcessEvent(event);
2232d43be4eSopenharmony_ci    event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_GET_PREFERRED_NETWORK_MODE);
2242d43be4eSopenharmony_ci    dataConnectionMonitor->ProcessEvent(event);
2252d43be4eSopenharmony_ci    event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_SET_PREFERRED_NETWORK_MODE);
2262d43be4eSopenharmony_ci    dataConnectionMonitor->ProcessEvent(event);
2272d43be4eSopenharmony_ci    event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_OFF);
2282d43be4eSopenharmony_ci    dataConnectionMonitor->ProcessEvent(event);
2292d43be4eSopenharmony_ci    event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_ON);
2302d43be4eSopenharmony_ci    dataConnectionMonitor->ProcessEvent(event);
2312d43be4eSopenharmony_ci    dataConnectionMonitor->dataFlowType_ = CellDataFlowType::DATA_FLOW_TYPE_NONE;
2322d43be4eSopenharmony_ci    dataConnectionMonitor->SetDataFlowType(CellDataFlowType::DATA_FLOW_TYPE_DOWN);
2332d43be4eSopenharmony_ci    ASSERT_EQ(static_cast<int32_t>(dataConnectionMonitor->dataFlowType_),
2342d43be4eSopenharmony_ci        static_cast<int32_t>(CellDataFlowType::DATA_FLOW_TYPE_DOWN));
2352d43be4eSopenharmony_ci}
2362d43be4eSopenharmony_ci
2372d43be4eSopenharmony_ci/**
2382d43be4eSopenharmony_ci * @tc.number   CellularDataController_SetIntelligenceSwitchEnable_001
2392d43be4eSopenharmony_ci * @tc.name     test function branch
2402d43be4eSopenharmony_ci * @tc.desc     Function test
2412d43be4eSopenharmony_ci */
2422d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, CellularDataController_SetIntelligenceSwitchEnable_001, TestSize.Level0)
2432d43be4eSopenharmony_ci{
2442d43be4eSopenharmony_ci    std::shared_ptr<CellularDataController> cellularDataController = std::make_shared<CellularDataController>(0);
2452d43be4eSopenharmony_ci    cellularDataController->cellularDataHandler_ = nullptr;
2462d43be4eSopenharmony_ci    int32_t result = cellularDataController->SetIntelligenceSwitchEnable(true);
2472d43be4eSopenharmony_ci    ASSERT_EQ(result, TELEPHONY_ERR_LOCAL_PTR_NULL);
2482d43be4eSopenharmony_ci}
2492d43be4eSopenharmony_ci
2502d43be4eSopenharmony_ci/**
2512d43be4eSopenharmony_ci * @tc.number   CellularDataController_SetIntelligenceSwitchEnable_002
2522d43be4eSopenharmony_ci * @tc.name     test function branch
2532d43be4eSopenharmony_ci * @tc.desc     Function test
2542d43be4eSopenharmony_ci */
2552d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, CellularDataController_SetIntelligenceSwitchEnable_002, TestSize.Level0)
2562d43be4eSopenharmony_ci{
2572d43be4eSopenharmony_ci    std::shared_ptr<CellularDataController> cellularDataController = std::make_shared<CellularDataController>(0);
2582d43be4eSopenharmony_ci    cellularDataController->Init();
2592d43be4eSopenharmony_ci    int32_t result = cellularDataController->SetIntelligenceSwitchEnable(false);
2602d43be4eSopenharmony_ci    ASSERT_EQ(result, 0);
2612d43be4eSopenharmony_ci}
2622d43be4eSopenharmony_ci
2632d43be4eSopenharmony_ci/**
2642d43be4eSopenharmony_ci * @tc.number   CellularDataController_OnAddSystemAbility_001
2652d43be4eSopenharmony_ci * @tc.name     test function branch
2662d43be4eSopenharmony_ci * @tc.desc     Function test
2672d43be4eSopenharmony_ci */
2682d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, CellularDataController_OnAddSystemAbility_001, TestSize.Level0)
2692d43be4eSopenharmony_ci{
2702d43be4eSopenharmony_ci    std::shared_ptr<CellularDataController> cellularDataController = std::make_shared<CellularDataController>(0);
2712d43be4eSopenharmony_ci    cellularDataController->systemAbilityListener_ =
2722d43be4eSopenharmony_ci        new (std::nothrow) CellularDataController::SystemAbilityStatusChangeListener(0, nullptr);
2732d43be4eSopenharmony_ci    if (cellularDataController->systemAbilityListener_ != nullptr) {
2742d43be4eSopenharmony_ci        cellularDataController->systemAbilityListener_->OnRemoveSystemAbility(
2752d43be4eSopenharmony_ci            COMM_NET_CONN_MANAGER_SYS_ABILITY_ID, "");
2762d43be4eSopenharmony_ci        cellularDataController->systemAbilityListener_->OnRemoveSystemAbility(
2772d43be4eSopenharmony_ci            COMM_NET_POLICY_MANAGER_SYS_ABILITY_ID, "");
2782d43be4eSopenharmony_ci        cellularDataController->systemAbilityListener_->OnRemoveSystemAbility(
2792d43be4eSopenharmony_ci            DISTRIBUTED_KV_DATA_SERVICE_ABILITY_ID, "");
2802d43be4eSopenharmony_ci        cellularDataController->systemAbilityListener_->OnRemoveSystemAbility(-1, "");
2812d43be4eSopenharmony_ci    }
2822d43be4eSopenharmony_ci    ASSERT_EQ(cellularDataController->cellularDataHandler_, nullptr);
2832d43be4eSopenharmony_ci}
2842d43be4eSopenharmony_ci
2852d43be4eSopenharmony_ci/**
2862d43be4eSopenharmony_ci * @tc.number   RemoveOrAddUidTest001
2872d43be4eSopenharmony_ci * @tc.name     test function branch
2882d43be4eSopenharmony_ci * @tc.desc     Function test
2892d43be4eSopenharmony_ci */
2902d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, RemoveOrAddUidTest001, TestSize.Level0)
2912d43be4eSopenharmony_ci{
2922d43be4eSopenharmony_ci    NetRequest request;
2932d43be4eSopenharmony_ci    request.ident = "simId123456789123";
2942d43be4eSopenharmony_ci    EXPECT_EQ(service->AddUid(request), CELLULAR_DATA_INVALID_PARAM);
2952d43be4eSopenharmony_ci    EXPECT_EQ(service->RemoveUid(request), CELLULAR_DATA_INVALID_PARAM);
2962d43be4eSopenharmony_ci    request.ident = "simId12";
2972d43be4eSopenharmony_ci    EXPECT_EQ(service->AddUid(request), CELLULAR_DATA_INVALID_PARAM);
2982d43be4eSopenharmony_ci    EXPECT_EQ(service->RemoveUid(request), CELLULAR_DATA_INVALID_PARAM);
2992d43be4eSopenharmony_ci}
3002d43be4eSopenharmony_ci
3012d43be4eSopenharmony_ci/**
3022d43be4eSopenharmony_ci * @tc.number   EstablishAllApnsIfConnectableTest001
3032d43be4eSopenharmony_ci * @tc.name     test function branch
3042d43be4eSopenharmony_ci * @tc.desc     Function test
3052d43be4eSopenharmony_ci */
3062d43be4eSopenharmony_ciHWTEST_F(CellularDataServiceTest, EstablishAllApnsIfConnectableTest001, TestSize.Level0)
3072d43be4eSopenharmony_ci{
3082d43be4eSopenharmony_ci    int32_t slotId = -1;
3092d43be4eSopenharmony_ci    EXPECT_EQ(service->EstablishAllApnsIfConnectable(slotId), TELEPHONY_ERR_PERMISSION_ERR);
3102d43be4eSopenharmony_ci    EXPECT_EQ(service->ReleaseCellularDataConnection(slotId), TELEPHONY_ERR_PERMISSION_ERR);
3112d43be4eSopenharmony_ci}
3122d43be4eSopenharmony_ci
3132d43be4eSopenharmony_ci} // namespace Telephony
3142d43be4eSopenharmony_ci} // namespace OHOS