• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2025 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 #define private public
16 #define protected public
17 
18 #include <string>
19 #include <unistd.h>
20 #include "gtest/gtest.h"
21 #include "sim_constant.h"
22 #include "sim_manager.h"
23 #include "core_manager_inner.h"
24 #include "core_service.h"
25 #include "core_service_client.h"
26 #include "enum_convert.h"
27 
28 #include "multi_sim_controller.h"
29 
30 namespace OHOS {
31 namespace Telephony {
32 using namespace testing::ext;
33 using namespace testing;
34 
35 class MultiSimControllerTest : public testing::Test {
36 public:
37     static void SetUpTestCase();
38     static void TearDownTestCase();
39     void SetUp();
40     void TearDown();
41 };
42 
43 
SetUpTestCase()44 void MultiSimControllerTest::SetUpTestCase() {}
45 
TearDownTestCase()46 void MultiSimControllerTest::TearDownTestCase() {}
47 
SetUp()48 void MultiSimControllerTest::SetUp() {}
49 
TearDown()50 void MultiSimControllerTest::TearDown() {}
51 
52 HWTEST_F(MultiSimControllerTest, MultiSimControllerTest_Init_001, Function | MediumTest | Level1)
53 {
54     std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
55     std::vector<std::shared_ptr<Telephony::SimStateManager>> simStateManager = { nullptr, nullptr };
56     std::vector<std::shared_ptr<Telephony::SimFileManager>> simFileManager = { nullptr, nullptr };
57     std::shared_ptr<Telephony::MultiSimController> multiSimController =
58         std::make_shared<MultiSimController>(telRilManager, simStateManager, simFileManager);
59     auto radioProtocolController =
60         std::make_shared<RadioProtocolController>(std::weak_ptr<TelRilManager>(telRilManager));
61     multiSimController->simDbHelper_ = std::make_unique<SimRdbHelper>();
62     multiSimController->radioProtocolController_ = nullptr;
63     multiSimController->Init();
64     multiSimController->radioProtocolController_ = radioProtocolController;
65     EXPECT_EQ(multiSimController->isSetActiveSimInProgress_.size(), SIM_SLOT_COUNT);
66 }
67 
68 HWTEST_F(MultiSimControllerTest, MultiSimControllerTest_ForgetAllData_001, Function | MediumTest | Level1)
69 {
70     std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
71     std::vector<std::shared_ptr<Telephony::SimStateManager>> simStateManager = { nullptr, nullptr };
72     std::vector<std::shared_ptr<Telephony::SimFileManager>> simFileManager = { nullptr, nullptr };
73     std::shared_ptr<Telephony::MultiSimController> multiSimController =
74         std::make_shared<MultiSimController>(telRilManager, simStateManager, simFileManager);
75     multiSimController->simDbHelper_ = nullptr;
76     bool ret = multiSimController->ForgetAllData();
77     EXPECT_FALSE(ret);
78 }
79 
80 HWTEST_F(MultiSimControllerTest, MultiSimControllerTest_ForgetAllDataWithSlotId_001, Function | MediumTest | Level1)
81 {
82     int slotId = -1;
83     std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
84     std::vector<std::shared_ptr<Telephony::SimStateManager>> simStateManager = { nullptr, nullptr };
85     std::vector<std::shared_ptr<Telephony::SimFileManager>> simFileManager = { nullptr, nullptr };
86     std::shared_ptr<Telephony::MultiSimController> multiSimController =
87         std::make_shared<MultiSimController>(telRilManager, simStateManager, simFileManager);
88     multiSimController->simDbHelper_ = nullptr;
89     bool ret = multiSimController->ForgetAllData(slotId);
90     multiSimController->simDbHelper_ = std::make_unique<SimRdbHelper>();
91     multiSimController->ForgetAllData(slotId);
92     EXPECT_FALSE(ret);
93 }
94 
95 HWTEST_F(MultiSimControllerTest, MultiSimControllerTest_UpdateOpKeyInfo_001, Function | MediumTest | Level1)
96 {
97     std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
98     std::vector<std::shared_ptr<Telephony::SimStateManager>> simStateManager = { nullptr, nullptr };
99     std::vector<std::shared_ptr<Telephony::SimFileManager>> simFileManager = { nullptr, nullptr };
100     std::shared_ptr<Telephony::MultiSimController> multiSimController =
101         std::make_shared<MultiSimController>(telRilManager, simStateManager, simFileManager);
102     multiSimController->simDbHelper_ = nullptr;
103     bool ret = multiSimController->UpdateOpKeyInfo();
104     multiSimController->simDbHelper_ = std::make_unique<SimRdbHelper>();
105     multiSimController->UpdateOpKeyInfo();
106     EXPECT_TRUE(ret);
107 }
108 
109 HWTEST_F(MultiSimControllerTest, MultiSimControllerTest_InitData_001, Function | MediumTest | Level1)
110 {
111     int32_t slotId = DEFAULT_SIM_SLOT_ID - 1;
112     std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
113     std::vector<std::shared_ptr<Telephony::SimStateManager>> simStateManager = { nullptr, nullptr };
114     std::vector<std::shared_ptr<Telephony::SimFileManager>> simFileManager = { nullptr, nullptr };
115     std::shared_ptr<Telephony::MultiSimController> multiSimController =
116         std::make_shared<MultiSimController>(telRilManager, simStateManager, simFileManager);
117     bool ret = multiSimController->InitData(slotId);
118     EXPECT_FALSE(ret);
119 }
120 
121 HWTEST_F(MultiSimControllerTest, MultiSimControllerTest_InitActive_001, Function | MediumTest | Level1)
122 {
123     int32_t slotId = 0;
124     std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
125     auto simStateManager0 = std::make_shared<Telephony::SimStateManager>(telRilManager);
126     std::vector<std::shared_ptr<Telephony::SimStateManager>> simStateManager = { simStateManager0, nullptr };
127     std::vector<std::shared_ptr<Telephony::SimFileManager>> simFileManager = { nullptr, nullptr };
128     std::shared_ptr<Telephony::MultiSimController> multiSimController =
129         std::make_shared<MultiSimController>(telRilManager, simStateManager, simFileManager);
130     bool ret = multiSimController->InitActive(slotId);
131     EXPECT_TRUE(ret);
132 }
133 
134 HWTEST_F(MultiSimControllerTest, MultiSimControllerTest_ReCheckPrimary_001, Function | MediumTest | Level1)
135 {
136     std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
137     auto simStateManager0 = std::make_shared<Telephony::SimStateManager>(telRilManager);
138     std::vector<std::shared_ptr<Telephony::SimStateManager>> simStateManager = { simStateManager0, nullptr };
139     std::vector<std::shared_ptr<Telephony::SimFileManager>> simFileManager = { nullptr, nullptr };
140     std::shared_ptr<Telephony::MultiSimController> multiSimController =
141         std::make_shared<MultiSimController>(telRilManager, simStateManager, simFileManager);
142     multiSimController->maxCount_ = 1;
143     multiSimController->ReCheckPrimary();
144     EXPECT_NE(multiSimController->simStateManager_[0], nullptr);
145 }
146 
147 HWTEST_F(MultiSimControllerTest, MultiSimControllerTest_IsAllCardsLoaded_001, Function | MediumTest | Level1)
148 {
149     std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
150     auto simStateManager0 = std::make_shared<Telephony::SimStateManager>(telRilManager);
151     std::vector<std::shared_ptr<Telephony::SimStateManager>> simStateManager = { simStateManager0, nullptr };
152     std::vector<std::shared_ptr<Telephony::SimFileManager>> simFileManager = { nullptr, nullptr };
153     std::shared_ptr<Telephony::MultiSimController> multiSimController =
154         std::make_shared<MultiSimController>(telRilManager, simStateManager, simFileManager);
155     std::vector<SimRdbInfo> newCache;
156     newCache.resize(2);
157     newCache[0].iccId = "2164181618486135";
158     newCache[1].iccId.clear();
159     multiSimController->localCacheInfo_ = newCache;
160     bool ret = multiSimController->IsAllCardsLoaded();
161     EXPECT_TRUE(ret);
162 }
163 
164 HWTEST_F(MultiSimControllerTest, MultiSimControllerTest_InitIccId_001, Function | MediumTest | Level1)
165 {
166     std::shared_ptr<TelRilManager> telRilManager = std::make_shared<TelRilManager>();
167     auto simStateManager0 = std::make_shared<Telephony::SimStateManager>(telRilManager);
168     std::vector<std::shared_ptr<Telephony::SimStateManager>> simStateManager = { simStateManager0, nullptr };
169     std::vector<std::shared_ptr<Telephony::SimFileManager>> simFileManager = { nullptr, nullptr };
170     std::shared_ptr<Telephony::MultiSimController> multiSimController =
171         std::make_shared<MultiSimController>(telRilManager, simStateManager, simFileManager);
172     std::vector<SimRdbInfo> newCache;
173     newCache.resize(2);
174     newCache[0].iccId = "2164181618486135";
175     newCache[1].iccId.clear();
176     multiSimController->localCacheInfo_ = newCache;
177     bool ret = multiSimController->IsAllCardsLoaded();
178     EXPECT_TRUE(ret);
179 }
180 
181 }
182 }
183