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
162d43be4eSopenharmony_ci#define private public
172d43be4eSopenharmony_ci#define protected public
182d43be4eSopenharmony_ci
192d43be4eSopenharmony_ci#include <gtest/gtest.h>
202d43be4eSopenharmony_ci
212d43be4eSopenharmony_ci#include "cellular_data_dump_helper.h"
222d43be4eSopenharmony_ci#include "core_service_client.h"
232d43be4eSopenharmony_ci#include "mock/mock_core_service.h"
242d43be4eSopenharmony_ci#include "telephony_types.h"
252d43be4eSopenharmony_ci
262d43be4eSopenharmony_cinamespace OHOS {
272d43be4eSopenharmony_cinamespace Telephony {
282d43be4eSopenharmony_ciusing namespace testing::ext;
292d43be4eSopenharmony_ciusing ::testing::_;
302d43be4eSopenharmony_ciusing ::testing::DoAll;
312d43be4eSopenharmony_ciusing ::testing::Return;
322d43be4eSopenharmony_ciusing ::testing::AtLeast;
332d43be4eSopenharmony_ciusing ::testing::SetArgReferee;
342d43be4eSopenharmony_ci
352d43be4eSopenharmony_ciclass CellularDataDumpHelperTest : public testing::Test {
362d43be4eSopenharmony_cipublic:
372d43be4eSopenharmony_ci    CellularDataDumpHelperTest()
382d43be4eSopenharmony_ci    {
392d43be4eSopenharmony_ci        mockCoreService = new MockCoreService();
402d43be4eSopenharmony_ci        sptr<ICoreService> mockCoreServicePtr(mockCoreService);
412d43be4eSopenharmony_ci        DelayedRefSingleton<CoreServiceClient>::GetInstance().proxy_ = mockCoreServicePtr;
422d43be4eSopenharmony_ci    }
432d43be4eSopenharmony_ci    ~CellularDataDumpHelperTest() = default;
442d43be4eSopenharmony_ci    static void TearDownTestCase()
452d43be4eSopenharmony_ci    {
462d43be4eSopenharmony_ci        if (DelayedRefSingleton<CoreServiceClient>::GetInstance().proxy_ != nullptr) {
472d43be4eSopenharmony_ci            DelayedRefSingleton<CoreServiceClient>::GetInstance().proxy_ = nullptr;
482d43be4eSopenharmony_ci            std::cout << "CellularDataDumpHelperTest set proxy_ nullptr" << std::endl;
492d43be4eSopenharmony_ci        }
502d43be4eSopenharmony_ci    }
512d43be4eSopenharmony_ci    MockCoreService *mockCoreService;
522d43be4eSopenharmony_ci};
532d43be4eSopenharmony_ci
542d43be4eSopenharmony_ciHWTEST_F(CellularDataDumpHelperTest, CellularDataDumpHelper_01, Function | MediumTest | Level1)
552d43be4eSopenharmony_ci{
562d43be4eSopenharmony_ci    CellularDataDumpHelper help;
572d43be4eSopenharmony_ci    std::vector<std::string> args = {"cellular_data", "--help"};
582d43be4eSopenharmony_ci    std::string result = "";
592d43be4eSopenharmony_ci    help.Dump(args, result);
602d43be4eSopenharmony_ci    std::cout << "CellularDataDumpHelper_01 result: " << result << std::endl;
612d43be4eSopenharmony_ci    ASSERT_FALSE(result.find("CellularData") == std::string::npos);
622d43be4eSopenharmony_ci    ASSERT_FALSE(result.find("Usage:dump <command> [options]") == std::string::npos);
632d43be4eSopenharmony_ci}
642d43be4eSopenharmony_ci
652d43be4eSopenharmony_ciHWTEST_F(CellularDataDumpHelperTest, CellularDataDumpHelper_02, Function | MediumTest | Level1)
662d43be4eSopenharmony_ci{
672d43be4eSopenharmony_ci    CellularDataDumpHelper help;
682d43be4eSopenharmony_ci    std::vector<std::string> args = {"cellular_data", "help"};
692d43be4eSopenharmony_ci    std::string result = "";
702d43be4eSopenharmony_ci    EXPECT_CALL(*mockCoreService, HasSimCard(_, _))
712d43be4eSopenharmony_ci        .Times(AtLeast(0))
722d43be4eSopenharmony_ci        .WillRepeatedly(DoAll(SetArgReferee<1>(false), Return(0)));
732d43be4eSopenharmony_ci    help.Dump(args, result);
742d43be4eSopenharmony_ci    std::cout << "CellularDataDumpHelper_02 result: " << result << std::endl;
752d43be4eSopenharmony_ci    ASSERT_FALSE(result.find("Ohos cellular data service") == std::string::npos);
762d43be4eSopenharmony_ci    ASSERT_TRUE(result.find("CellularDataRoamingEnabled") == std::string::npos);
772d43be4eSopenharmony_ci}
782d43be4eSopenharmony_ci
792d43be4eSopenharmony_ciHWTEST_F(CellularDataDumpHelperTest, CellularDataDumpHelper_03, Function | MediumTest | Level1)
802d43be4eSopenharmony_ci{
812d43be4eSopenharmony_ci    CellularDataDumpHelper help;
822d43be4eSopenharmony_ci    std::vector<std::string> args = {"cellular_data_1", "--help"};
832d43be4eSopenharmony_ci    std::string result = "";
842d43be4eSopenharmony_ci    EXPECT_CALL(*mockCoreService, HasSimCard(_, _))
852d43be4eSopenharmony_ci        .Times(AtLeast(0))
862d43be4eSopenharmony_ci        .WillRepeatedly(DoAll(SetArgReferee<1>(false), Return(0)));
872d43be4eSopenharmony_ci    help.Dump(args, result);
882d43be4eSopenharmony_ci    std::cout << "CellularDataDumpHelper_03 result: " << result << std::endl;
892d43be4eSopenharmony_ci    ASSERT_FALSE(result.find("Ohos cellular data service") == std::string::npos);
902d43be4eSopenharmony_ci    ASSERT_TRUE(result.find("CellularDataRoamingEnabled") == std::string::npos);
912d43be4eSopenharmony_ci}
922d43be4eSopenharmony_ci
932d43be4eSopenharmony_ciHWTEST_F(CellularDataDumpHelperTest, CellularDataDumpHelper_04, Function | MediumTest | Level1)
942d43be4eSopenharmony_ci{
952d43be4eSopenharmony_ci    maxSlotCount_ = 2;
962d43be4eSopenharmony_ci    EXPECT_CALL(*mockCoreService, HasSimCard(0, _)).WillOnce(DoAll(SetArgReferee<1>(true), Return(0)));
972d43be4eSopenharmony_ci    EXPECT_CALL(*mockCoreService, HasSimCard(1, _)).WillOnce(DoAll(SetArgReferee<1>(false), Return(0)));
982d43be4eSopenharmony_ci    CellularDataDumpHelper help;
992d43be4eSopenharmony_ci    std::vector<std::string> args = {"cellular_data_1", "help"};
1002d43be4eSopenharmony_ci    std::string result = "";
1012d43be4eSopenharmony_ci    help.Dump(args, result);
1022d43be4eSopenharmony_ci    std::cout << "CellularDataDumpHelper_04 result: " << result << std::endl;
1032d43be4eSopenharmony_ci    ASSERT_FALSE(result.find("Ohos cellular data service") == std::string::npos);
1042d43be4eSopenharmony_ci    ASSERT_FALSE(result.find("CellularDataRoamingEnabled") == std::string::npos);
1052d43be4eSopenharmony_ci    maxSlotCount_ = 0;
1062d43be4eSopenharmony_ci}
1072d43be4eSopenharmony_ci
1082d43be4eSopenharmony_ci}  // namespace Telephony
1092d43be4eSopenharmony_ci}  // namespace OHOS