1 /*
2  * Copyright (C) 2024 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 #define private public
17 #define protected public
18 
19 #include <gtest/gtest.h>
20 #include "mock/mock_sim_manager.h"
21 #include "data_switch_settings.h"
22 #include "core_manager_inner.h"
23 #include "telephony_errors.h"
24 
25 namespace OHOS {
26 namespace Telephony {
27 using namespace testing::ext;
28 using ::testing::_;
29 using ::testing::Return;
30 
31 class DataSwitchSettingTest : public testing::Test {
32 public:
DataSwitchSettingTest()33     DataSwitchSettingTest()
34     {
35         mockSimManager = new MockSimManager();
36         std::shared_ptr<MockSimManager> mockSimManagerPtr(mockSimManager);
37         CoreManagerInner::GetInstance().simManager_ = mockSimManagerPtr;
38     }
39     ~DataSwitchSettingTest() = default;
40 
TearDownTestCase()41     static void TearDownTestCase()
42     {
43         if (CoreManagerInner::GetInstance().simManager_ != nullptr) {
44             CoreManagerInner::GetInstance().simManager_ = nullptr;
45             std::cout << "DataSwitchSettingTest set simManager_ nullptr" << std::endl;
46         }
47     }
48 
49     MockSimManager *mockSimManager;
50 };
51 
HWTEST_F(DataSwitchSettingTest, DataSwitchSetting_01, Function | MediumTest | Level1)52 HWTEST_F(DataSwitchSettingTest, DataSwitchSetting_01, Function | MediumTest | Level1)
53 {
54     DataSwitchSettings sets(2);
55     std::cout << "DataSwitchSetting_01 slotId: " << sets.slotId_ << std::endl;
56     ASSERT_TRUE(sets.SetUserDataOn(true) == TELEPHONY_ERR_SUCCESS);
57 
58     DataSwitchSettings sets1(0);
59     ASSERT_TRUE(sets.SetUserDataOn(true) == TELEPHONY_ERR_SUCCESS);
60 }
61 
HWTEST_F(DataSwitchSettingTest, DataSwitchSetting_02, Function | MediumTest | Level1)62 HWTEST_F(DataSwitchSettingTest, DataSwitchSetting_02, Function | MediumTest | Level1)
63 {
64     DataSwitchSettings sets(2);
65     std::cout << "DataSwitchSetting_02 slotId: " << sets.slotId_ << std::endl;
66     bool dataEnabled;
67     ASSERT_TRUE(sets.QueryUserDataStatus(dataEnabled) == TELEPHONY_ERR_SUCCESS);
68     ASSERT_TRUE(dataEnabled);
69 
70     DataSwitchSettings sets1(0);
71     ASSERT_TRUE(sets1.QueryUserDataStatus(dataEnabled) == TELEPHONY_ERR_SUCCESS);
72     ASSERT_TRUE(dataEnabled);
73 }
74 
HWTEST_F(DataSwitchSettingTest, DataSwitchSetting_03, Function | MediumTest | Level1)75 HWTEST_F(DataSwitchSettingTest, DataSwitchSetting_03, Function | MediumTest | Level1)
76 {
77     DataSwitchSettings sets(2);
78     std::cout << "DataSwitchSetting_03 slotId: " << sets.slotId_ << std::endl;
79     ASSERT_TRUE(sets.SetUserDataRoamingOn(true) == TELEPHONY_ERR_SUCCESS);
80 
81     DataSwitchSettings sets1(0);
82     EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(0));
83     ASSERT_TRUE(sets1.SetUserDataRoamingOn(true) == TELEPHONY_ERR_SLOTID_INVALID);
84 
85     EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(1));
86     ASSERT_TRUE(sets1.SetUserDataRoamingOn(true) == TELEPHONY_ERR_SUCCESS);
87 }
88 
HWTEST_F(DataSwitchSettingTest, DataSwitchSetting_04, Function | MediumTest | Level1)89 HWTEST_F(DataSwitchSettingTest, DataSwitchSetting_04, Function | MediumTest | Level1)
90 {
91     bool dataRoamingEnabled;
92     DataSwitchSettings sets(2);
93     std::cout << "DataSwitchSetting_04 slotId: " << sets.slotId_ << std::endl;
94     ASSERT_TRUE(sets.QueryUserDataRoamingStatus(dataRoamingEnabled) == TELEPHONY_ERR_SUCCESS);
95     ASSERT_TRUE(dataRoamingEnabled);
96 
97     DataSwitchSettings sets1(0);
98     EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(0));
99     ASSERT_TRUE(sets1.QueryUserDataRoamingStatus(dataRoamingEnabled) == TELEPHONY_ERR_LOCAL_PTR_NULL);
100 
101     EXPECT_CALL(*mockSimManager, GetSimId(_)).WillOnce(Return(1));
102     ASSERT_FALSE(sets1.QueryUserDataRoamingStatus(dataRoamingEnabled) == TELEPHONY_ERR_SUCCESS);
103 }
104 
HWTEST_F(DataSwitchSettingTest, DataSwitchSetting_05, Function | MediumTest | Level1)105 HWTEST_F(DataSwitchSettingTest, DataSwitchSetting_05, Function | MediumTest | Level1)
106 {
107     DataSwitchSettings sets(0);
108     sets.userDataOn_ = false;
109     std::cout << "DataSwitchSetting_05 userDataOn_: " << sets.userDataOn_ << ", policyDataOn_:" << sets.policyDataOn_
110               << ", internalDataOn_:" << sets.internalDataOn_ << std::endl;
111     ASSERT_FALSE(sets.IsAllowActiveData());
112     sets.userDataOn_ = true;
113     sets.policyDataOn_ = true;
114     sets.internalDataOn_ = true;
115     ASSERT_TRUE(sets.IsAllowActiveData());
116 }
117 
118 }  // namespace Telephony
119 }  // namespace OHOS