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#include "mock/mock_sim_manager.h"
212d43be4eSopenharmony_ci#include "data_switch_settings.h"
222d43be4eSopenharmony_ci#include "core_manager_inner.h"
232d43be4eSopenharmony_ci#include "telephony_errors.h"
242d43be4eSopenharmony_ci
252d43be4eSopenharmony_cinamespace OHOS {
262d43be4eSopenharmony_cinamespace Telephony {
272d43be4eSopenharmony_ciusing namespace testing::ext;
282d43be4eSopenharmony_ciusing ::testing::_;
292d43be4eSopenharmony_ciusing ::testing::Return;
302d43be4eSopenharmony_ci
312d43be4eSopenharmony_ciclass DataSwitchSettingTest : public testing::Test {
322d43be4eSopenharmony_cipublic:
332d43be4eSopenharmony_ci    DataSwitchSettingTest()
342d43be4eSopenharmony_ci    {
352d43be4eSopenharmony_ci        mockSimManager = new MockSimManager();
362d43be4eSopenharmony_ci        std::shared_ptr<MockSimManager> mockSimManagerPtr(mockSimManager);
372d43be4eSopenharmony_ci        CoreManagerInner::GetInstance().simManager_ = mockSimManagerPtr;
382d43be4eSopenharmony_ci    }
392d43be4eSopenharmony_ci    ~DataSwitchSettingTest() = default;
402d43be4eSopenharmony_ci
412d43be4eSopenharmony_ci    static void TearDownTestCase()
422d43be4eSopenharmony_ci    {
432d43be4eSopenharmony_ci        if (CoreManagerInner::GetInstance().simManager_ != nullptr) {
442d43be4eSopenharmony_ci            CoreManagerInner::GetInstance().simManager_ = nullptr;
452d43be4eSopenharmony_ci            std::cout << "DataSwitchSettingTest set simManager_ nullptr" << std::endl;
462d43be4eSopenharmony_ci        }
472d43be4eSopenharmony_ci    }
482d43be4eSopenharmony_ci
492d43be4eSopenharmony_ci    MockSimManager *mockSimManager;
502d43be4eSopenharmony_ci};
512d43be4eSopenharmony_ci
522d43be4eSopenharmony_ciHWTEST_F(DataSwitchSettingTest, DataSwitchSetting_01, Function | MediumTest | Level1)
532d43be4eSopenharmony_ci{
542d43be4eSopenharmony_ci    DataSwitchSettings sets(2);
552d43be4eSopenharmony_ci    std::cout << "DataSwitchSetting_01 slotId: " << sets.slotId_ << std::endl;
562d43be4eSopenharmony_ci    ASSERT_TRUE(sets.SetUserDataOn(true) == TELEPHONY_ERR_SUCCESS);
572d43be4eSopenharmony_ci
582d43be4eSopenharmony_ci    DataSwitchSettings sets1(0);
592d43be4eSopenharmony_ci    ASSERT_TRUE(sets.SetUserDataOn(true) == TELEPHONY_ERR_SUCCESS);
602d43be4eSopenharmony_ci}
612d43be4eSopenharmony_ci
622d43be4eSopenharmony_ciHWTEST_F(DataSwitchSettingTest, DataSwitchSetting_02, Function | MediumTest | Level1)
632d43be4eSopenharmony_ci{
642d43be4eSopenharmony_ci    DataSwitchSettings sets(2);
652d43be4eSopenharmony_ci    std::cout << "DataSwitchSetting_02 slotId: " << sets.slotId_ << std::endl;
662d43be4eSopenharmony_ci    bool dataEnabled;
672d43be4eSopenharmony_ci    ASSERT_TRUE(sets.QueryUserDataStatus(dataEnabled) == TELEPHONY_ERR_SUCCESS);
682d43be4eSopenharmony_ci    ASSERT_TRUE(dataEnabled);
692d43be4eSopenharmony_ci
702d43be4eSopenharmony_ci    DataSwitchSettings sets1(0);
712d43be4eSopenharmony_ci    ASSERT_TRUE(sets1.QueryUserDataStatus(dataEnabled) == TELEPHONY_ERR_SUCCESS);
722d43be4eSopenharmony_ci    ASSERT_TRUE(dataEnabled);
732d43be4eSopenharmony_ci}
742d43be4eSopenharmony_ci
752d43be4eSopenharmony_ciHWTEST_F(DataSwitchSettingTest, DataSwitchSetting_03, Function | MediumTest | Level1)
762d43be4eSopenharmony_ci{
772d43be4eSopenharmony_ci    DataSwitchSettings sets(2);
782d43be4eSopenharmony_ci    std::cout << "DataSwitchSetting_03 slotId: " << sets.slotId_ << std::endl;
792d43be4eSopenharmony_ci    ASSERT_TRUE(sets.SetUserDataRoamingOn(true) == TELEPHONY_ERR_SUCCESS);
802d43be4eSopenharmony_ci
812d43be4eSopenharmony_ci    DataSwitchSettings sets1(0);
822d43be4eSopenharmony_ci    EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(0));
832d43be4eSopenharmony_ci    ASSERT_TRUE(sets1.SetUserDataRoamingOn(true) == TELEPHONY_ERR_SLOTID_INVALID);
842d43be4eSopenharmony_ci
852d43be4eSopenharmony_ci    EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(1));
862d43be4eSopenharmony_ci    ASSERT_TRUE(sets1.SetUserDataRoamingOn(true) == TELEPHONY_ERR_SUCCESS);
872d43be4eSopenharmony_ci}
882d43be4eSopenharmony_ci
892d43be4eSopenharmony_ciHWTEST_F(DataSwitchSettingTest, DataSwitchSetting_04, Function | MediumTest | Level1)
902d43be4eSopenharmony_ci{
912d43be4eSopenharmony_ci    bool dataRoamingEnabled;
922d43be4eSopenharmony_ci    DataSwitchSettings sets(2);
932d43be4eSopenharmony_ci    std::cout << "DataSwitchSetting_04 slotId: " << sets.slotId_ << std::endl;
942d43be4eSopenharmony_ci    ASSERT_TRUE(sets.QueryUserDataRoamingStatus(dataRoamingEnabled) == TELEPHONY_ERR_SUCCESS);
952d43be4eSopenharmony_ci    ASSERT_TRUE(dataRoamingEnabled);
962d43be4eSopenharmony_ci
972d43be4eSopenharmony_ci    DataSwitchSettings sets1(0);
982d43be4eSopenharmony_ci    EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(0));
992d43be4eSopenharmony_ci    ASSERT_TRUE(sets1.QueryUserDataRoamingStatus(dataRoamingEnabled) == TELEPHONY_ERR_LOCAL_PTR_NULL);
1002d43be4eSopenharmony_ci
1012d43be4eSopenharmony_ci    EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(1));
1022d43be4eSopenharmony_ci    ASSERT_FALSE(sets1.QueryUserDataRoamingStatus(dataRoamingEnabled) == TELEPHONY_ERR_SUCCESS);
1032d43be4eSopenharmony_ci}
1042d43be4eSopenharmony_ci
1052d43be4eSopenharmony_ciHWTEST_F(DataSwitchSettingTest, DataSwitchSetting_05, Function | MediumTest | Level1)
1062d43be4eSopenharmony_ci{
1072d43be4eSopenharmony_ci    DataSwitchSettings sets(0);
1082d43be4eSopenharmony_ci    sets.userDataOn_ = false;
1092d43be4eSopenharmony_ci    std::cout << "DataSwitchSetting_05 userDataOn_: " << sets.userDataOn_ << ", policyDataOn_:" << sets.policyDataOn_
1102d43be4eSopenharmony_ci              << ", internalDataOn_:" << sets.internalDataOn_ << std::endl;
1112d43be4eSopenharmony_ci    ASSERT_FALSE(sets.IsAllowActiveData());
1122d43be4eSopenharmony_ci    sets.userDataOn_ = true;
1132d43be4eSopenharmony_ci    sets.policyDataOn_ = true;
1142d43be4eSopenharmony_ci    sets.internalDataOn_ = true;
1152d43be4eSopenharmony_ci    ASSERT_TRUE(sets.IsAllowActiveData());
1162d43be4eSopenharmony_ci}
1172d43be4eSopenharmony_ci
1182d43be4eSopenharmony_ci}  // namespace Telephony
1192d43be4eSopenharmony_ci}  // namespace OHOS