1 /*
2 * Copyright (C) 2023-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 <gmock/gmock.h>
20 #include <random>
21 #include "cdma_sms_message.h"
22 #include "delivery_short_message_callback_stub.h"
23 #include "gtest/gtest.h"
24 #include "gsm_sms_tpdu_decode.h"
25 #include "gsm_sms_param_decode.h"
26 #include "gsm_sms_tpdu_encode.h"
27 #include "gsm_user_data_pdu.h"
28 #include "mock/mock_data_share_helper.h"
29 #include "mock/mock_data_share_result_set.h"
30 #include "radio_event.h"
31 #include "send_short_message_callback_stub.h"
32 #include "sms_broadcast_subscriber_receiver.h"
33 #include "sms_hisysevent.h"
34 #include "sms_misc_manager.h"
35 #include "sms_mms_gtest.h"
36 #include "sms_network_policy_manager.h"
37 #include "sms_service.h"
38 #include "sms_persist_helper.h"
39 #include "system_ability_definition.h"
40
41 namespace OHOS {
42 namespace Telephony {
43 using namespace testing::ext;
44 using ::testing::Invoke;
45 using ::testing::Return;
46 using ::testing::_;
47
48 namespace {
49 const std::string TEST_SOURCE_DATA = "srcData";
50 const std::string SMS_ADDR_ONE = "";
51 const std::string SMS_ADDR_TWO = " ";
52 const std::string SMS_ADDR_THREE = " 123 ";
53 const std::string SMS_ADDR_FOUR = "1 23";
54 const std::string SMS_ADDR_FIVE = " a 123 ";
55 const std::string SEND_MMS_FILE_URL = "1,2,";
56 const std::string VNET_MMSC = "http://mmsc.vnet.mobi";
57 static constexpr uint8_t MAX_GSM_7BIT_DATA_LEN = 160;
58 static constexpr uint8_t MAX_SMSC_LEN = 20;
59 } // namespace
60
61 class BranchSmsPartTest : public testing::Test {
62 public:
63 static void SetUpTestCase();
64 static void TearDownTestCase();
65 void SetUp();
66 void TearDown();
67 };
SetUpTestCase()68 void BranchSmsPartTest::SetUpTestCase() {}
69
70 constexpr uint32_t EVENT_RELEASE_DATA_SHARE_HELPER = 10000;
TearDownTestCase()71 void BranchSmsPartTest::TearDownTestCase()
72 {
73 DelayedSingleton<SmsPersistHelper>::GetInstance()->RemoveEvent(EVENT_RELEASE_DATA_SHARE_HELPER);
74 }
75
SetUp()76 void BranchSmsPartTest::SetUp() {}
77
TearDown()78 void BranchSmsPartTest::TearDown() {}
79
80 /**
81 * @tc.number Telephony_SmsMmsGtest_SmsInterfaceStub_0001
82 * @tc.name Test SmsInterfaceStub
83 * @tc.desc Function test
84 */
85 HWTEST_F(BranchSmsPartTest, SmsInterfaceStub_0001, Function | MediumTest | Level1)
86 {
87 AccessMmsToken token;
88 int32_t slotId = 0;
89 MessageParcel dataParcel;
90 dataParcel.WriteInt32(slotId);
91 dataParcel.WriteBuffer(TEST_SOURCE_DATA.c_str(), TEST_SOURCE_DATA.size());
92 dataParcel.RewindRead(0);
93 MessageParcel replyParcel;
94 uint32_t code = 0;
95 MessageOption option(MessageOption::TF_SYNC);
96 DelayedSingleton<SmsService>::GetInstance()->OnRemoteRequest(code, dataParcel, replyParcel, option);
97 DelayedSingleton<SmsService>::GetInstance()->OnSendSmsTextRequest(dataParcel, replyParcel, option);
98 DelayedSingleton<SmsService>::GetInstance()->OnSendSmsTextWithoutSaveRequest(dataParcel, replyParcel, option);
99 DelayedSingleton<SmsService>::GetInstance()->OnSendSmsDataRequest(dataParcel, replyParcel, option);
100 DelayedSingleton<SmsService>::GetInstance()->OnGetSmscAddr(dataParcel, replyParcel, option);
101 DelayedSingleton<SmsService>::GetInstance()->OnAddSimMessage(dataParcel, replyParcel, option);
102 DelayedSingleton<SmsService>::GetInstance()->OnUpdateSimMessage(dataParcel, replyParcel, option);
103 DelayedSingleton<SmsService>::GetInstance()->OnGetAllSimMessages(dataParcel, replyParcel, option);
104 DelayedSingleton<SmsService>::GetInstance()->OnSplitMessage(dataParcel, replyParcel, option);
105 DelayedSingleton<SmsService>::GetInstance()->OnCreateMessage(dataParcel, replyParcel, option);
106 DelayedSingleton<SmsService>::GetInstance()->OnGetBase64Encode(dataParcel, replyParcel, option);
107 DelayedSingleton<SmsService>::GetInstance()->OnGetBase64Decode(dataParcel, replyParcel, option);
108 DelayedSingleton<SmsService>::GetInstance()->OnGetEncodeStringFunc(dataParcel, replyParcel, option);
109 DelayedSingleton<SmsService>::GetInstance()->OnGetSmsSegmentsInfo(dataParcel, replyParcel, option);
110
111 MessageParcel sendTextParcel;
112 sendTextParcel.WriteInt32(0);
113 sendTextParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
114 sendTextParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
115 sendTextParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
116 sendTextParcel.WriteString(TEST_SOURCE_DATA);
117 DelayedSingleton<SmsService>::GetInstance()->OnSendSmsTextRequest(sendTextParcel, replyParcel, option);
118 sendTextParcel.WriteInt32(-1);
119 DelayedSingleton<SmsService>::GetInstance()->OnSendSmsTextRequest(sendTextParcel, replyParcel, option);
120 int32_t result = replyParcel.ReadInt32();
121 EXPECT_GE(result, 0);
122
123 MessageParcel sendDataParcel;
124 dataParcel.WriteInt32(0);
125 dataParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
126 dataParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
127 dataParcel.WriteInt16(0);
128 dataParcel.WriteInt16(TEST_SOURCE_DATA.size());
129 dataParcel.WriteRawData(TEST_SOURCE_DATA.c_str(), TEST_SOURCE_DATA.size());
130 DelayedSingleton<SmsService>::GetInstance()->OnSendSmsDataRequest(dataParcel, replyParcel, option);
131 sendTextParcel.WriteInt32(-1);
132 DelayedSingleton<SmsService>::GetInstance()->OnSendSmsDataRequest(dataParcel, replyParcel, option);
133 result = replyParcel.ReadInt32();
134 EXPECT_GE(result, -1);
135 }
136
137 /**
138 * @tc.number Telephony_SmsMmsGtest_SmsInterfaceStub_0002
139 * @tc.name Test SmsInterfaceStub
140 * @tc.desc Function test
141 */
142 HWTEST_F(BranchSmsPartTest, SmsInterfaceStub_0002, Function | MediumTest | Level1)
143 {
144 std::u16string desAddr = Str8ToStr16(SMS_ADDR_ONE);
145 DelayedSingleton<SmsService>::GetInstance()->RemoveSpacesInDesAddr(desAddr);
146 EXPECT_GE(desAddr.size(), 0);
147 desAddr = Str8ToStr16(SMS_ADDR_TWO);
148 DelayedSingleton<SmsService>::GetInstance()->RemoveSpacesInDesAddr(desAddr);
149 EXPECT_GE(desAddr.size(), 0);
150 desAddr = Str8ToStr16(SMS_ADDR_THREE);
151 DelayedSingleton<SmsService>::GetInstance()->RemoveSpacesInDesAddr(desAddr);
152 EXPECT_GE(desAddr.size(), 0);
153 desAddr = Str8ToStr16(SMS_ADDR_FOUR);
154 DelayedSingleton<SmsService>::GetInstance()->RemoveSpacesInDesAddr(desAddr);
155 EXPECT_GE(desAddr.size(), 0);
156 desAddr = Str8ToStr16(SMS_ADDR_FIVE);
157 DelayedSingleton<SmsService>::GetInstance()->RemoveSpacesInDesAddr(desAddr);
158 EXPECT_GE(desAddr.size(), 0);
159
160 MessageParcel setSmscParcel;
161 MessageParcel replyParcel;
162 MessageOption option(MessageOption::TF_SYNC);
163 setSmscParcel.WriteInt32(0);
164 setSmscParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
165 DelayedSingleton<SmsService>::GetInstance()->OnSetSmscAddr(setSmscParcel, replyParcel, option);
166 MessageParcel getSmscParcel;
167 getSmscParcel.WriteInt32(0);
168 DelayedSingleton<SmsService>::GetInstance()->OnGetSmscAddr(getSmscParcel, replyParcel, option);
169 DelayedSingleton<SmsService>::GetInstance()->OnGetAllSimMessages(getSmscParcel, replyParcel, option);
170 DelayedSingleton<SmsService>::GetInstance()->OnSetDefaultSmsSlotId(getSmscParcel, replyParcel, option);
171 DelayedSingleton<SmsService>::GetInstance()->OnGetDefaultSmsSlotId(getSmscParcel, replyParcel, option);
172 int32_t result = replyParcel.ReadInt32();
173 EXPECT_GE(result, 0);
174
175 MessageParcel addSimMsgParcel;
176 addSimMsgParcel.WriteInt32(0);
177 addSimMsgParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
178 addSimMsgParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
179 addSimMsgParcel.WriteUint32(0);
180 DelayedSingleton<SmsService>::GetInstance()->OnAddSimMessage(addSimMsgParcel, replyParcel, option);
181 result = replyParcel.ReadInt32();
182 EXPECT_GE(result, 0);
183
184 MessageParcel delSimMsgParcel;
185 delSimMsgParcel.WriteInt32(0);
186 delSimMsgParcel.WriteUint32(0);
187 DelayedSingleton<SmsService>::GetInstance()->OnDelSimMessage(delSimMsgParcel, replyParcel, option);
188 result = replyParcel.ReadInt32();
189 EXPECT_GE(result, 0);
190 }
191
192 /**
193 * @tc.number Telephony_SmsMmsGtest_SmsInterfaceStub_0003
194 * @tc.name Test SmsInterfaceStub
195 * @tc.desc Function test
196 */
197 HWTEST_F(BranchSmsPartTest, SmsInterfaceStub_0003, Function | MediumTest | Level1)
198 {
199 MessageParcel simMsgParcel;
200 MessageParcel replyParcel;
201 MessageOption option(MessageOption::TF_SYNC);
202 simMsgParcel.WriteInt32(0);
203 simMsgParcel.WriteUint32(0);
204 simMsgParcel.WriteUint32(0);
205 simMsgParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
206 simMsgParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
207 DelayedSingleton<SmsService>::GetInstance()->OnUpdateSimMessage(simMsgParcel, replyParcel, option);
208 int32_t result = replyParcel.ReadInt32();
209 EXPECT_GE(result, 0);
210
211 MessageParcel SetImsSmsParcel;
212 SetImsSmsParcel.WriteInt32(0);
213 SetImsSmsParcel.WriteInt32(false);
214 DelayedSingleton<SmsService>::GetInstance()->OnSetImsSmsConfig(SetImsSmsParcel, replyParcel, option);
215 result = replyParcel.ReadInt32();
216 EXPECT_GE(result, 0);
217
218 MessageParcel splitMsgParcel;
219 splitMsgParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
220 DelayedSingleton<SmsService>::GetInstance()->OnSplitMessage(splitMsgParcel, replyParcel, option);
221 DelayedSingleton<SmsService>::GetInstance()->OnGetBase64Encode(splitMsgParcel, replyParcel, option);
222 DelayedSingleton<SmsService>::GetInstance()->OnGetBase64Decode(splitMsgParcel, replyParcel, option);
223 result = replyParcel.ReadInt32();
224 EXPECT_GE(result, 0);
225
226 MessageParcel createMsgParcel;
227 createMsgParcel.WriteString(TEST_SOURCE_DATA);
228 createMsgParcel.WriteString(TEST_SOURCE_DATA);
229 DelayedSingleton<SmsService>::GetInstance()->OnCreateMessage(createMsgParcel, replyParcel, option);
230 result = replyParcel.ReadInt32();
231 EXPECT_GE(result, 0);
232
233 MessageParcel segmentParcel;
234 segmentParcel.WriteInt32(0);
235 segmentParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
236 segmentParcel.WriteBool(false);
237 DelayedSingleton<SmsService>::GetInstance()->OnGetSmsSegmentsInfo(segmentParcel, replyParcel, option);
238 result = replyParcel.ReadInt32();
239 EXPECT_GE(result, 0);
240
241 MessageParcel formatParcel;
242 DelayedSingleton<SmsService>::GetInstance()->OnGetImsShortMessageFormat(formatParcel, replyParcel, option);
243 result = replyParcel.ReadInt32();
244 DelayedSingleton<SmsService>::GetInstance()->OnGetDefaultSmsSimId(formatParcel, replyParcel, option);
245 result = replyParcel.ReadInt32();
246 EXPECT_GE(result, 0);
247 }
248
249 /**
250 * @tc.number Telephony_SmsMmsGtest_SmsInterfaceStub_0004
251 * @tc.name Test SmsInterfaceStub
252 * @tc.desc Function test
253 */
254 HWTEST_F(BranchSmsPartTest, SmsInterfaceStub_0004, Function | MediumTest | Level1)
255 {
256 MessageParcel replyParcel;
257 MessageOption option(MessageOption::TF_SYNC);
258 MessageParcel cbConfigListMessage;
259 cbConfigListMessage.WriteInt32(1);
260 cbConfigListMessage.WriteInt32(257);
261 replyParcel.WriteInt32(111);
262 DelayedSingleton<SmsService>::GetInstance()->OnSetCBConfigList(cbConfigListMessage, replyParcel, option);
263 EXPECT_GE(replyParcel.ReadInt32(), 111);
264 }
265 /**
266 * @tc.number Telephony_SmsMmsGtest_SmsInterfaceManager_0001
267 * @tc.name Test SmsInterfaceManager
268 * @tc.desc Function test
269 */
270 HWTEST_F(BranchSmsPartTest, SmsInterfaceManager_0001, Function | MediumTest | Level1)
271 {
272 auto interfaceManager = std::make_shared<SmsInterfaceManager>(0);
273 ASSERT_NE(interfaceManager, nullptr);
274 interfaceManager->HasSmsCapability();
275 std::string dataStr = TEST_SOURCE_DATA;
276 auto callStub = iface_cast<ISendShortMessageCallback>(new SendShortMessageCallbackStub());
277 auto deliveryStub = iface_cast<IDeliveryShortMessageCallback>(new DeliveryShortMessageCallbackStub());
278 std::string emptyStr = "";
279 uint16_t dataBaseId = 0;
280 interfaceManager->TextBasedSmsDelivery(dataStr, dataStr, dataStr, callStub, deliveryStub, dataBaseId);
281 interfaceManager->TextBasedSmsDelivery(dataStr, emptyStr, dataStr, callStub, deliveryStub, dataBaseId);
282 interfaceManager->TextBasedSmsDelivery(dataStr, dataStr, emptyStr, callStub, deliveryStub, dataBaseId);
283 int32_t result = interfaceManager->TextBasedSmsDelivery(dataStr, emptyStr, emptyStr,
284 callStub, deliveryStub, dataBaseId);
285 EXPECT_GE(result, 0);
286
287 const uint8_t *data = reinterpret_cast<const uint8_t *>(dataStr.c_str());
288 interfaceManager->DataBasedSmsDelivery(dataStr, dataStr, 0, data, dataStr.size(), callStub, deliveryStub);
289 interfaceManager->DataBasedSmsDelivery(dataStr, emptyStr, 0, data, dataStr.size(), callStub, deliveryStub);
290 interfaceManager->DataBasedSmsDelivery(dataStr, dataStr, 0, nullptr, 0, callStub, deliveryStub);
291 interfaceManager->smsSendManager_ = nullptr;
292 interfaceManager->TextBasedSmsDelivery(dataStr, dataStr, dataStr, callStub, deliveryStub, dataBaseId);
293 result = interfaceManager->DataBasedSmsDelivery(dataStr, dataStr, 0, data, dataStr.size(), callStub, deliveryStub);
294 EXPECT_GE(result, 0);
295
296 interfaceManager->AddSimMessage(dataStr, dataStr, ISmsServiceInterface::SIM_MESSAGE_STATUS_UNREAD);
297 interfaceManager->UpdateSimMessage(0, ISmsServiceInterface::SIM_MESSAGE_STATUS_UNREAD, dataStr, dataStr);
298 std::vector<ShortMessage> message;
299 interfaceManager->GetAllSimMessages(message);
300 result = interfaceManager->SetSmscAddr(dataStr);
301 EXPECT_GE(result, 0);
302
303 std::u16string smsc;
304 interfaceManager->GetSmscAddr(smsc);
305 interfaceManager->SetCBConfig(false, 0, 1, 0);
306 std::vector<int32_t> messageIds1 = {4352, 4355, 4388, 4390};
307 interfaceManager->SetCBConfigList(messageIds1, 1);
308 std::vector<int32_t> messageIds2 = {4352, 4388, 4390};
309 interfaceManager->SetCBConfigList(messageIds2, 1);
310 result = interfaceManager->SetImsSmsConfig(0, false);
311 EXPECT_GE(result, 0);
312
313 interfaceManager->SetDefaultSmsSlotId(0);
314 interfaceManager->GetDefaultSmsSlotId();
315 int32_t simId;
316 interfaceManager->GetDefaultSmsSimId(simId);
317 std::vector<std::u16string> splitMessage;
318 result = interfaceManager->SplitMessage(dataStr, splitMessage);
319 EXPECT_GE(result, 0);
320 }
321
322 /**
323 * @tc.number Telephony_SmsMmsGtest_SmsInterfaceManager_0002
324 * @tc.name Test SmsInterfaceManager
325 * @tc.desc Function test
326 */
327 HWTEST_F(BranchSmsPartTest, SmsInterfaceManager_0002, Function | MediumTest | Level1)
328 {
329 auto interfaceManager = std::make_shared<SmsInterfaceManager>(0);
330 ASSERT_NE(interfaceManager, nullptr);
331 LengthInfo outInfo;
332 std::string dataStr = TEST_SOURCE_DATA;
333 interfaceManager->GetSmsSegmentsInfo(dataStr, false, outInfo);
334 bool isSupported = false;
335 interfaceManager->IsImsSmsSupported(0, isSupported);
336 std::u16string format;
337 interfaceManager->GetImsShortMessageFormat(format);
338 int32_t result = interfaceManager->HasSmsCapability();
339 EXPECT_GE(result, 0);
340
341 std::u16string mmsc = u"";
342 std::u16string data = u"";
343 std::u16string ua = u"";
344 std::u16string uaprof = u"";
345 interfaceManager->SendMms(mmsc, data, ua, uaprof);
346 result = interfaceManager->DownloadMms(mmsc, data, ua, uaprof);
347 EXPECT_GE(result, 0);
348
349 interfaceManager->smsMiscManager_ = nullptr;
350 interfaceManager->AddSimMessage(dataStr, dataStr, ISmsServiceInterface::SIM_MESSAGE_STATUS_UNREAD);
351 interfaceManager->UpdateSimMessage(0, ISmsServiceInterface::SIM_MESSAGE_STATUS_UNREAD, dataStr, dataStr);
352 std::vector<ShortMessage> message;
353 interfaceManager->GetAllSimMessages(message);
354 interfaceManager->SetSmscAddr(dataStr);
355 std::u16string smsc;
356 result = interfaceManager->GetSmscAddr(mmsc);
357 EXPECT_GE(result, 0);
358
359 interfaceManager->SetCBConfig(false, 0, 1, 0);
360 std::vector<int32_t> messageIds1 = {4352, 4355, 4388, 4390};
361 interfaceManager->SetCBConfigList(messageIds1, 1);
362 interfaceManager->SetImsSmsConfig(0, false);
363 interfaceManager->SetDefaultSmsSlotId(0);
364 interfaceManager->GetDefaultSmsSlotId();
365 int32_t simId;
366 result = interfaceManager->GetDefaultSmsSimId(simId);
367 EXPECT_GE(result, 0);
368
369 std::vector<std::u16string> splitMessage;
370 interfaceManager->SplitMessage(dataStr, splitMessage);
371 interfaceManager->GetSmsSegmentsInfo(dataStr, false, outInfo);
372 result = interfaceManager->IsImsSmsSupported(0, isSupported);
373 EXPECT_GE(result, 0);
374
375 interfaceManager->GetImsShortMessageFormat(format);
376 interfaceManager->mmsSendManager_ = nullptr;
377 interfaceManager->SendMms(mmsc, data, ua, uaprof);
378 interfaceManager->mmsReceiverManager_ = nullptr;
379 result = interfaceManager->DownloadMms(mmsc, data, ua, uaprof);
380 EXPECT_GE(result, 0);
381 }
382
383 /**
384 * @tc.number Telephony_SmsMmsGtest_SmsInterfaceManager_0003
385 * @tc.name Test SmsInterfaceManager
386 * @tc.desc Function test
387 */
388 HWTEST_F(BranchSmsPartTest, SmsInterfaceManager_0003, Function | MediumTest | Level1)
389 {
390 int32_t slotId = 0;
391 std::shared_ptr<SmsInterfaceManager> interfaceManager = std::make_shared<SmsInterfaceManager>(slotId);
392 interfaceManager->mmsSendManager_ = nullptr;
393 std::u16string mmsc(StringUtils::ToUtf16(VNET_MMSC));
394 std::u16string data(StringUtils::ToUtf16(SEND_MMS_FILE_URL));
395 std::u16string ua = u"112233";
396 std::u16string uaprof = u"112233";
397 int32_t sendMmsRet = interfaceManager->SendMms(mmsc, data, ua, uaprof);
398 interfaceManager->mmsReceiverManager_ = nullptr;
399 int32_t downloadMmsRet = interfaceManager->DownloadMms(mmsc, data, ua, uaprof);
400 EXPECT_GE(sendMmsRet, 0);
401 EXPECT_GE(downloadMmsRet, 0);
402
403 if (interfaceManager->smsSendManager_ == nullptr) {
404 interfaceManager->smsSendManager_ = std::make_unique<SmsSendManager>(0);
405 }
406 interfaceManager->smsSendManager_->Init();
407 interfaceManager->smsSendManager_->networkManager_->netWorkType_ = NetWorkType::NET_TYPE_GSM;
408 std::string specialText =
409 "ฏ็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็";
410 std::vector<std::u16string> splitMessage;
411 interfaceManager->SplitMessage(specialText, splitMessage);
412 size_t segCount = 2;
413 size_t maxSegLen = 67;
414 ASSERT_EQ(splitMessage.size(), segCount);
415 EXPECT_EQ(splitMessage[0].size(), maxSegLen);
416
417 std::string normalText =
418 "这是一个普通的长短信,由数字0123456789、小写字母abcdefghijklmnopqrstuvwxyz、大写字母ABCDEFGHIJKLMNOPQRSTUVWXYZ和汉字组成";
419 splitMessage.clear();
420 interfaceManager->SplitMessage(normalText, splitMessage);
421 ASSERT_EQ(splitMessage.size(), segCount);
422 EXPECT_EQ(splitMessage[0].size(), maxSegLen);
423
424 std::string randomText;
425 size_t randomLength = 500;
426 randomText.reserve(randomLength);
427 std::random_device rd;
428 std::mt19937 gen(rd());
429 std::uniform_int_distribution<> dis(1, 0xFF);
430 for (size_t i = 0; i < randomLength; i++) {
431 randomText += static_cast<char>(dis(gen));
432 }
433 splitMessage.clear();
434 interfaceManager->SplitMessage(randomText, splitMessage);
435 EXPECT_GE(splitMessage.size(), 1);
436 }
437
438 /**
439 * @tc.number Telephony_SmsMmsGtest_SmsEmailMessage_0001
440 * @tc.name Test SmsEmailMessage
441 * @tc.desc Function test
442 */
443 HWTEST_F(BranchSmsPartTest, SmsEmailMessage_0001, Function | MediumTest | Level1)
444 {
445 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
446 string pdu = ("07963258974152f204038105f300008022110232438a28e6a71b40c587eb7"
447 "076d9357eb7412f7d793a07ddeb6278794d07bde8d5391b246e93d3");
448 EXPECT_TRUE(gsmSmsMessage->CreateMessage(pdu) != nullptr);
449 auto message = gsmSmsMessage->CreateMessage(pdu);
450 EXPECT_EQ(message->GetEmailMessageBody(), "zeSs wubpekt /tUsl bmdi");
451 EXPECT_EQ(message->GetVisibleMessageBody(), "zeSs wubpekt /tUsl bmdi");
452 EXPECT_EQ(message->GetEmailAddress(), "fOn@Txauple.com");
453 EXPECT_EQ(message->GetVisibleOriginatingAddress(), "fOn@Txauple.com");
454 EXPECT_TRUE(message->IsEmail());
455
456 pdu = ("07913244457812f204038105f400007120103215358a29d6e71b503667db7076d935"
457 "7eb741af0d0a442fcfe8c13639bfe16d289bdee6b5f1813629");
458 EXPECT_TRUE(gsmSmsMessage->CreateMessage(pdu) != nullptr);
459 message = gsmSmsMessage->CreateMessage(pdu);
460 EXPECT_EQ(message->GetEmailMessageBody(), "{ te3tAmdy[^~\\] }");
461 EXPECT_EQ(message->GetVisibleMessageBody(), "{ te3tAmdy[^~\\] }");
462 EXPECT_EQ(message->GetEmailAddress(), "VOo@efYmple.com");
463 EXPECT_EQ(message->GetVisibleOriginatingAddress(), "VOo@efYmple.com");
464 EXPECT_TRUE(message->IsEmail());
465 }
466
467 /**
468 * @tc.number Telephony_SmsMmsGtest_SmsEmailMessage_0002
469 * @tc.name Test SmsEmailMessage
470 * @tc.desc Function test
471 */
472 HWTEST_F(BranchSmsPartTest, SmsEmailMessage_0002, Function | MediumTest | Level1)
473 {
474 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
475 string pdu = ("07963258974152f204038105f300008022110232438a28e6a71b40c587eb"
476 "7076d9357eb7412f7d793a07ddeb6278794d07bde8d5391b246e93d3");
477 EXPECT_TRUE(gsmSmsMessage->CreateMessage(pdu) != nullptr);
478 auto message = gsmSmsMessage->CreateMessage(pdu);
479 EXPECT_TRUE(message != nullptr);
480
481 EXPECT_TRUE(message->IsEmailAddress("\"DAS\" <NAME@sadds.com>"));
482 EXPECT_TRUE(message->IsEmailAddress("DAS <NAME@sadds.com>"));
483 EXPECT_FALSE(message->IsEmailAddress(""));
484 EXPECT_FALSE(message->IsEmailAddress("\"DAS\" 45654654564"));
485 EXPECT_FALSE(message->IsEmailAddress("DAS 13254654654"));
486 EXPECT_TRUE(message->IsEmailAddress("阿松大@163.com"));
487 EXPECT_TRUE(message->IsEmailAddress("aaa@aa.bb.163.com"));
488 }
489
490 /**
491 * @tc.number Telephony_SmsMmsGtest_SmsEmailMessage_0003
492 * @tc.name Test SmsEmailMessage
493 * @tc.desc Function test
494 */
495 HWTEST_F(BranchSmsPartTest, SmsEmailMessage_0003, Function | MediumTest | Level1)
496 {
497 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
498 string pdu = ("07963258974152f2040D91687103920059F100008022110232438a28e6a71b40c587e"
499 "b7076d9357eb7412f7d793a07ddeb6278794d07bde8d5391b246e93d3");
500 EXPECT_TRUE(gsmSmsMessage->CreateMessage(pdu) != nullptr);
501 auto message = gsmSmsMessage->CreateMessage(pdu);
502 EXPECT_FALSE(message->IsEmail());
503
504 pdu = ("07963258974152f204038105f300008022110232438a10e6a71b40c587eb7076d9357eb743");
505 EXPECT_TRUE(gsmSmsMessage->CreateMessage(pdu) != nullptr);
506 message = gsmSmsMessage->CreateMessage(pdu);
507 EXPECT_FALSE(message->IsEmail());
508 }
509
510 /**
511 * @tc.number Telephony_SmsMmsGtest_SmsStateObserver_0001
512 * @tc.name Test SmsStateObserver_0001
513 * @tc.desc Function test
514 */
515 HWTEST_F(BranchSmsPartTest, SmsStateObserver_0001, Function | MediumTest | Level1)
516 {
517 std::shared_ptr<SmsStateObserver> smsStateObserver = std::make_shared<SmsStateObserver>();
518 smsStateObserver->smsSubscriber_ = nullptr;
519 smsStateObserver->StopEventSubscriber();
520 std::shared_ptr<CommonEventSubscribeInfo> subscribeInfo = std::make_shared<CommonEventSubscribeInfo>();
521 std::shared_ptr<SmsStateEventSubscriber> smsStateEventSubscriber =
522 std::make_shared<SmsStateEventSubscriber>(*subscribeInfo);
523 EventFwk::CommonEventData eventData = EventFwk::CommonEventData();
524 AAFwk::Want want = AAFwk::Want();
525 want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_EMERGENCY_CB_RECEIVE_COMPLETED);
526 eventData.SetWant(want);
527 smsStateEventSubscriber->OnReceiveEvent(eventData);
528 want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_RECEIVE_COMPLETED);
529 eventData.SetWant(want);
530 smsStateEventSubscriber->OnReceiveEvent(eventData);
531 want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_WAPPUSH_RECEIVE_COMPLETED);
532 eventData.SetWant(want);
533 smsStateEventSubscriber->OnReceiveEvent(eventData);
534 want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_BATTERY_LOW);
535 eventData.SetWant(want);
536 smsStateEventSubscriber->OnReceiveEvent(eventData);
537 EXPECT_TRUE(smsStateObserver != nullptr);
538 EXPECT_TRUE(subscribeInfo != nullptr);
539 EXPECT_TRUE(smsStateEventSubscriber != nullptr);
540 }
541
542 /**
543 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamCodec_0014
544 * @tc.name Test GsmSmsParamCodec DecodeSmscPdu
545 * @tc.desc Function test
546 */
547 HWTEST_F(BranchSmsPartTest, GsmSmsParamCodec_0014, Function | MediumTest | Level1) {
548 /**
549 * test supporting smsAddress.ton is unknown
550 */
551 auto gsmSmsParamCodec = std::make_shared<GsmSmsParamCodec>();
552 EXPECT_NE(gsmSmsParamCodec, nullptr);
553 AddressNumber smsAddress;
554
555 unsigned char encodeData[] = { 0x2, 0x81, 0x2A, 0xB1 };
556 unsigned char *pSMSC = encodeData;
557 EXPECT_GE(gsmSmsParamCodec->DecodeSmscPdu(pSMSC, 5, smsAddress), 0);
558 std::string address(smsAddress.address);
559 EXPECT_EQ(address, "*21#");
560 }
561
562 /**
563 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamCodec_0015
564 * @tc.name Test GsmSmsParamCodec DecodeDcsPdu
565 * @tc.desc Function test
566 */
567 HWTEST_F(BranchSmsPartTest, GsmSmsParamCodec_0015, Function | MediumTest | Level1) {
568 /**
569 * test DecodeDcsPdu
570 */
571 auto gsmSmsParamCodec = std::make_shared<GsmSmsParamCodec>();
572 EXPECT_NE(gsmSmsParamCodec, nullptr);
573
574 auto decodeBuffer = std::make_shared<SmsReadBuffer>("0011000D91685150800576F70001C404D4F29C0E");
575 SmsDcs *smsDcs = new SmsDcs();
576 smsDcs->codingGroup = OHOS::Telephony::PduSchemeGroup::CODING_GENERAL_GROUP;
577 smsDcs->bCompressed = false;
578 smsDcs->codingScheme = OHOS::Telephony::DataCodingScheme::DATA_CODING_UCS2;
579 smsDcs->msgClass = OHOS::Telephony::SmsMessageClass::SMS_INSTANT_MESSAGE;
580
581 EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer, smsDcs), 1);
582 auto decodeBuffer1 = std::make_shared<SmsReadBuffer>("16D131D98C56B3DD7039584C36A3D56C375C0E169301");
583 EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer1, smsDcs), 1);
584 auto decodeBuffer2 = std::make_shared<SmsReadBuffer>("4011000D91685150800576F70001C404D4F29C0E");
585 EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer2, smsDcs), 1);
586 auto decodeBuffer3 = std::make_shared<SmsReadBuffer>("C011000D91685150800576F70001C404D4F29C0E");
587 EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer3, smsDcs), 1);
588 auto decodeBuffer4 = std::make_shared<SmsReadBuffer>("D011000D91685150800576F70001C404D4F29C0E");
589 EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer4, smsDcs), 1);
590 auto decodeBuffer5 = std::make_shared<SmsReadBuffer>("B011000D91685150800576F70001C404D4F29C0E");
591 EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer5, smsDcs), 1);
592 }
593
594 /**
595 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamDecode_0003
596 * @tc.name Test GsmSmsParamDecode DecodeDcsGeneralGroupPdu
597 * @tc.desc Function test
598 */
599 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0003, Function | MediumTest | Level1)
600 {
601 auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
602 EXPECT_NE(gsmSmsParamDecode, nullptr);
603 uint8_t dcs = 0x08;
604 SmsDcs *smsDcs = nullptr;
605 gsmSmsParamDecode->DecodeDcsGeneralGroupPdu(dcs, smsDcs);
606 EXPECT_EQ(smsDcs, nullptr);
607 SmsDcs *smsDcs1 = new SmsDcs();
608 gsmSmsParamDecode->DecodeDcsGeneralGroupPdu(dcs, smsDcs1);
609 EXPECT_EQ(smsDcs1->msgClass, OHOS::Telephony::SMS_CLASS_UNKNOWN);
610 dcs = 0x15;
611 gsmSmsParamDecode->DecodeDcsGeneralGroupPdu(dcs, smsDcs1);
612 EXPECT_NE(smsDcs1->msgClass, OHOS::Telephony::SMS_CLASS_UNKNOWN);
613 }
614
615 /**
616 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamDecode_0004
617 * @tc.name Test GsmSmsParamDecode DecodeDcsClassGroupPdu
618 * @tc.desc Function test
619 */
620 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0004, Function | MediumTest | Level1)
621 {
622 auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
623 EXPECT_NE(gsmSmsParamDecode, nullptr);
624 uint8_t dcs = 0x08;
625 SmsDcs *smsDcs = nullptr;
626 gsmSmsParamDecode->DecodeDcsClassGroupPdu(dcs, smsDcs);
627 EXPECT_EQ(smsDcs, nullptr);
628 SmsDcs *smsDcs1 = new SmsDcs();
629 gsmSmsParamDecode->DecodeDcsClassGroupPdu(dcs, smsDcs1);
630 EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::SMS_CLASS_GROUP);
631 }
632
633 /**
634 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamDecode_0005
635 * @tc.name Test GsmSmsParamDecode DecodeDcsDeleteGroupPdu
636 * @tc.desc Function test
637 */
638 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0005, Function | MediumTest | Level1)
639 {
640 auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
641 EXPECT_NE(gsmSmsParamDecode, nullptr);
642 uint8_t dcs = 0x08;
643 SmsDcs *smsDcs = nullptr;
644 gsmSmsParamDecode->DecodeDcsDeleteGroupPdu(dcs, smsDcs);
645 EXPECT_EQ(smsDcs, nullptr);
646 SmsDcs *smsDcs1 = new SmsDcs();
647 gsmSmsParamDecode->DecodeDcsDeleteGroupPdu(dcs, smsDcs1);
648 EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::CODING_DELETION_GROUP);
649 }
650
651 /**
652 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamDecode_0006
653 * @tc.name Test GsmSmsParamDecode DecodeDcsDiscardGroupPdu
654 * @tc.desc Function test
655 */
656 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0006, Function | MediumTest | Level1)
657 {
658 auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
659 EXPECT_NE(gsmSmsParamDecode, nullptr);
660 uint8_t dcs = 0x08;
661 SmsDcs *smsDcs = nullptr;
662 gsmSmsParamDecode->DecodeDcsDiscardGroupPdu(dcs, smsDcs);
663 EXPECT_EQ(smsDcs, nullptr);
664 SmsDcs *smsDcs1 = new SmsDcs();
665 gsmSmsParamDecode->DecodeDcsDiscardGroupPdu(dcs, smsDcs1);
666 EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::CODING_DISCARD_GROUP);
667 }
668
669 /**
670 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamDecode_0007
671 * @tc.name Test GsmSmsParamDecode DecodeDcsStoreGsmGroupPdu
672 * @tc.desc Function test
673 */
674 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0007, Function | MediumTest | Level1)
675 {
676 auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
677 EXPECT_NE(gsmSmsParamDecode, nullptr);
678 uint8_t dcs = 0x08;
679 SmsDcs *smsDcs = nullptr;
680 gsmSmsParamDecode->DecodeDcsStoreGsmGroupPdu(dcs, smsDcs);
681 EXPECT_EQ(smsDcs, nullptr);
682 SmsDcs *smsDcs1 = new SmsDcs();
683 gsmSmsParamDecode->DecodeDcsStoreGsmGroupPdu(dcs, smsDcs1);
684 EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::CODING_STORE_GROUP);
685 EXPECT_EQ(smsDcs1->codingScheme, OHOS::Telephony::DATA_CODING_7BIT);
686 }
687
688 /**
689 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamDecode_0008
690 * @tc.name Test GsmSmsParamDecode DecodeDcsStoreUCS2GroupPdu
691 * @tc.desc Function test
692 */
693 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0008, Function | MediumTest | Level1)
694 {
695 auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
696 EXPECT_NE(gsmSmsParamDecode, nullptr);
697 uint8_t dcs = 0x08;
698 SmsDcs *smsDcs = nullptr;
699 gsmSmsParamDecode->DecodeDcsStoreUCS2GroupPdu(dcs, smsDcs);
700 EXPECT_EQ(smsDcs, nullptr);
701 SmsDcs *smsDcs1 = new SmsDcs();
702 gsmSmsParamDecode->DecodeDcsStoreUCS2GroupPdu(dcs, smsDcs1);
703 EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::CODING_STORE_GROUP);
704 EXPECT_EQ(smsDcs1->codingScheme, OHOS::Telephony::DATA_CODING_UCS2);
705 }
706
707 /**
708 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamDecode_0009
709 * @tc.name Test GsmSmsParamDecode DecodeDcsUnknownGroupPdu
710 * @tc.desc Function test
711 */
712 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0009, Function | MediumTest | Level1)
713 {
714 auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
715 EXPECT_NE(gsmSmsParamDecode, nullptr);
716 uint8_t dcs = 0x08;
717 SmsDcs *smsDcs = nullptr;
718 gsmSmsParamDecode->DecodeDcsUnknownGroupPdu(dcs, smsDcs);
719 EXPECT_EQ(smsDcs, nullptr);
720 SmsDcs *smsDcs1 = new SmsDcs();
721 gsmSmsParamDecode->DecodeDcsUnknownGroupPdu(dcs, smsDcs1);
722 EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::CODING_UNKNOWN_GROUP);
723 EXPECT_EQ(smsDcs1->msgClass, OHOS::Telephony::SMS_CLASS_UNKNOWN);
724 }
725
726
727 /**
728 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamDecode_0010
729 * @tc.name Test GsmSmsParamDecode DecodeTimePduPartData
730 * @tc.desc Function test
731 */
732 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0010, Function | MediumTest | Level1)
733 {
734 auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
735 EXPECT_NE(gsmSmsParamDecode, nullptr);
736 auto decodeBuffer = std::make_shared<SmsReadBuffer>("");
737 EXPECT_NE(decodeBuffer, nullptr);
738 EXPECT_TRUE(decodeBuffer->IsEmpty());
739 SmsTimeStamp *pTimeStamp = new SmsTimeStamp();
740 pTimeStamp->format = SmsTimeFormat::SMS_TIME_ABSOLUTE;
741 pTimeStamp->time.absolute.timeZone = -1;
742 EXPECT_EQ(gsmSmsParamDecode->DecodeTimePduPartData(*decodeBuffer, pTimeStamp), false); // first branch PickOneByte
743
744 auto decodeBuffer1 = std::make_shared<SmsReadBuffer>("00");
745 EXPECT_NE(decodeBuffer1, nullptr);
746 EXPECT_FALSE(decodeBuffer1->IsEmpty());
747 decodeBuffer1->bitIndex_ = 1;
748 EXPECT_EQ(gsmSmsParamDecode->DecodeTimePduPartData(*decodeBuffer1, pTimeStamp), false); // fifth branch ReadByte
749 EXPECT_EQ(gsmSmsParamDecode->DecodeTimePduPartData(*decodeBuffer1, pTimeStamp), false); // third branch ReadByte
750 }
751
752 /**
753 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamDecode_0011
754 * @tc.name Test GsmSmsParamDecode DecodeTimePduData
755 * @tc.desc Function test
756 */
757 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0011, Function | MediumTest | Level1)
758 {
759 auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
760 EXPECT_NE(gsmSmsParamDecode, nullptr);
761 auto decodeBuffer = std::make_shared<SmsReadBuffer>("");
762 EXPECT_NE(decodeBuffer, nullptr);
763 EXPECT_FALSE(gsmSmsParamDecode->DecodeTimePduData(*decodeBuffer, nullptr)); // first branch nullptr
764
765 SmsTimeStamp *pTimeStamp = new SmsTimeStamp();
766 pTimeStamp->format = SmsTimeFormat::SMS_TIME_ABSOLUTE;
767 pTimeStamp->time.absolute.timeZone = -1;
768 EXPECT_FALSE(gsmSmsParamDecode->DecodeTimePduData(*decodeBuffer, pTimeStamp)); // second branch PickOneByte
769
770 auto decodeBuffer1 = std::make_shared<SmsReadBuffer>("00");
771 EXPECT_NE(decodeBuffer1, nullptr);
772 EXPECT_TRUE(gsmSmsParamDecode->DecodeTimePduData(*decodeBuffer1, pTimeStamp));
773 EXPECT_FALSE(gsmSmsParamDecode->DecodeTimePduData(*decodeBuffer1, pTimeStamp)); // second branch PickOneByte
774
775 auto decodeBuffer2 = std::make_shared<SmsReadBuffer>("16D131D98C56B3DD7039584C36A3D56C375C0E169301");
776 EXPECT_NE(decodeBuffer2, nullptr);
777 EXPECT_TRUE(gsmSmsParamDecode->DecodeTimePduData(*decodeBuffer2, pTimeStamp));
778 }
779
780 /**
781 * @tc.number Telephony_SmsMmsGtest_DecodeAddressAlphaNum_0001
782 * @tc.name Test GsmSmsParamDecode DecodeAddressAlphaNum
783 * @tc.desc Function test
784 */
785 HWTEST_F(BranchSmsPartTest, DecodeAddressAlphaNum_0001, Function | MediumTest | Level1)
786 {
787 auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
788 EXPECT_NE(gsmSmsParamDecode, nullptr);
789 auto buffer = std::make_shared<SmsReadBuffer>("00");
790 AddressNumber *pAddress = new AddressNumber();
791 uint8_t bcdLen = 1;
792 uint8_t addrLen = 1;
793 EXPECT_FALSE(gsmSmsParamDecode->DecodeAddressAlphaNum(*buffer, pAddress, bcdLen, addrLen)); // third branch
794
795 std::string pdu = StringUtils::HexToString("");
796 auto decodeBuffer1 = std::make_shared<SmsReadBuffer>(pdu);
797 printf("decodeBuffer1 index_ = %d, length_ = %d\n", decodeBuffer1->index_, decodeBuffer1->length_);
798 EXPECT_FALSE(gsmSmsParamDecode->DecodeAddressAlphaNum(*buffer, pAddress, bcdLen, addrLen)); // first branch
799 }
800
801 /**
802 * @tc.number Telephony_SmsMmsGtest_GsmSmsMessage_0004
803 * @tc.name Test GsmSmsMessage
804 * @tc.desc Function test
805 */
806 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0004, Function | MediumTest | Level1)
807 {
808 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
809 EXPECT_TRUE(gsmSmsMessage != nullptr);
810 unsigned char langId = 0;
811 gsmSmsMessage->smsTpdu_ = std::make_shared<struct SmsTpdu>();
812 gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_STATUS_REP;
813 EXPECT_EQ(gsmSmsMessage->SetHeaderLang(1, DataCodingScheme::DATA_CODING_UCS2, langId), 0);
814 }
815
816 /**
817 * @tc.number Telephony_SmsMmsGtest_GsmSmsMessage_0005
818 * @tc.name Test GsmSmsMessage
819 * @tc.desc Function test
820 */
821 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0005, Function | MediumTest | Level1)
822 {
823 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
824 EXPECT_TRUE(gsmSmsMessage != nullptr);
825 SmsConcat concat;
826 gsmSmsMessage->smsTpdu_ = std::make_shared<struct SmsTpdu>();
827 gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_STATUS_REP;
828 EXPECT_EQ(gsmSmsMessage->SetHeaderConcat(1, concat), 0);
829 }
830
831 /**
832 * @tc.number Telephony_SmsMmsGtest_GsmSmsMessage_0006
833 * @tc.name Test GsmSmsMessage
834 * @tc.desc Function test
835 */
836 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0006, Function | MediumTest | Level1)
837 {
838 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
839 EXPECT_TRUE(gsmSmsMessage != nullptr);
840 gsmSmsMessage->smsTpdu_ = nullptr;
841 EXPECT_EQ(gsmSmsMessage->SetHeaderReply(1), 0);
842
843 gsmSmsMessage->smsTpdu_ = std::make_shared<struct SmsTpdu>();
844 gsmSmsMessage->replyAddress_ = "+13588421254";
845 gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_STATUS_REP;
846 EXPECT_EQ(gsmSmsMessage->SetHeaderReply(1), 0);
847 }
848
849 /**
850 * @tc.number Telephony_SmsMmsGtest_GsmSmsMessage_0007
851 * @tc.name Test GsmSmsMessage CreateDefaultSubmit
852 * @tc.desc Function test
853 */
854 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0007, Function | MediumTest | Level1)
855 {
856 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
857 EXPECT_TRUE(gsmSmsMessage != nullptr);
858 gsmSmsMessage->CreateDefaultSubmit(false, DataCodingScheme::DATA_CODING_7BIT);
859 EXPECT_EQ(gsmSmsMessage->smsTpdu_->tpduType, OHOS::Telephony::SmsTpduType::SMS_TPDU_SUBMIT);
860 }
861
862 /**
863 * @tc.number Telephony_SmsMmsGtest_GsmSmsMessage_0008
864 * @tc.name Test GsmSmsMessage PduAnalysisMsg
865 * @tc.desc Function test
866 */
867 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0008, Function | MediumTest | Level1)
868 {
869 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
870 EXPECT_TRUE(gsmSmsMessage != nullptr);
871 gsmSmsMessage->smsTpdu_ = std::make_shared<struct SmsTpdu>();
872 gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_STATUS_REP;
873 // also test AnalysisMsgDeliver
874 EXPECT_TRUE(gsmSmsMessage->PduAnalysisMsg());
875 gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_SUBMIT;
876 // alse test AnalysisMsgSubmit
877 EXPECT_TRUE(gsmSmsMessage->PduAnalysisMsg());
878 gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_DELIVER_REP;
879 EXPECT_FALSE(gsmSmsMessage->PduAnalysisMsg());
880 }
881
882 /**
883 * @tc.number Telephony_SmsMmsGtest_GsmSmsMessage_0009
884 * @tc.name Test GsmSmsMessage ConvertUserData and ConvertUserPartData
885 * @tc.desc Function test
886 */
887 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0009, Function | MediumTest | Level1)
888 {
889 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
890 EXPECT_TRUE(gsmSmsMessage != nullptr);
891
892 gsmSmsMessage->smsTpdu_ = std::make_shared<struct SmsTpdu>();
893 gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_DELIVER;
894 gsmSmsMessage->codingScheme_ = OHOS::Telephony::DataCodingScheme::DATA_CODING_7BIT;
895 size_t oldSize = gsmSmsMessage->visibleMessageBody_.size();
896 gsmSmsMessage->smsUserData_.header[0].udh.singleShift.langId = 1;
897 std::string text = "1234566";
898 gsmSmsMessage->SetFullText(text);
899 gsmSmsMessage->ConvertUserData();
900 size_t newSize = gsmSmsMessage->visibleMessageBody_.size();
901 EXPECT_EQ(newSize, oldSize);
902
903 gsmSmsMessage->codingScheme_ = OHOS::Telephony::DataCodingScheme::DATA_CODING_UCS2;
904 oldSize = gsmSmsMessage->visibleMessageBody_.size();
905 gsmSmsMessage->ConvertUserData();
906 newSize = gsmSmsMessage->visibleMessageBody_.size();
907 EXPECT_EQ(newSize, oldSize);
908 }
909
910 /**
911 * @tc.number Telephony_SmsMmsGtest_GsmSmsMessage_0010
912 * @tc.name Test GsmSmsMessage IsSpecialMessage
913 * @tc.desc Function test
914 */
915 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0010, Function | MediumTest | Level1)
916 {
917 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
918 EXPECT_TRUE(gsmSmsMessage != nullptr);
919 gsmSmsMessage->protocolId_ = 0x40;
920 EXPECT_TRUE(gsmSmsMessage->IsSpecialMessage());
921
922 gsmSmsMessage->msgClass_ = OHOS::Telephony::SmsMessageClass::SMS_SIM_MESSAGE;
923 gsmSmsMessage->protocolId_ = 0x7f;
924 EXPECT_TRUE(gsmSmsMessage->IsSpecialMessage());
925
926 gsmSmsMessage->protocolId_ = 0x7c;
927 EXPECT_TRUE(gsmSmsMessage->IsSpecialMessage());
928
929 gsmSmsMessage->protocolId_ = 0x41;
930 gsmSmsMessage->bMwiSet_ = true;
931 EXPECT_TRUE(gsmSmsMessage->IsSpecialMessage());
932
933 gsmSmsMessage->bMwiClear_ = true;
934 EXPECT_TRUE(gsmSmsMessage->IsSpecialMessage());
935 }
936
937 /**
938 * @tc.number Telephony_SmsMmsGtest_GsmSmsMessage_0011
939 * @tc.name Test GsmSmsMessage DecodeMessage
940 * @tc.desc Function test
941 */
942 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0011, Function | MediumTest | Level1)
943 {
944 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
945 EXPECT_TRUE(gsmSmsMessage != nullptr);
946
947 std::string msgText("");
948 // init destination array of pdu data
949 uint8_t decodeData[(MAX_GSM_7BIT_DATA_LEN * OHOS::Telephony::MAX_SEGMENT_NUM) + 1];
950 EXPECT_EQ(memset_s(decodeData, sizeof(decodeData), 0x00, sizeof(decodeData)), EOK);
951
952 int encodeLen = 0;
953 bool bAbnormal = false;
954 unsigned char langId = OHOS::Telephony::MsgLanguageId::MSG_ID_RESERVED_LANG;
955 OHOS::Telephony::DataCodingScheme codingType = OHOS::Telephony::DataCodingScheme::DATA_CODING_7BIT;
956
957 encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
958 EXPECT_EQ(encodeLen, 0);
959
960 msgText = "123456";
961 encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
962 EXPECT_GT(encodeLen, 0);
963
964 codingType = OHOS::Telephony::DataCodingScheme::DATA_CODING_8BIT;
965 encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
966 EXPECT_GT(encodeLen, 0);
967
968 msgText.append(sizeof(decodeData), '1');
969 encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
970 EXPECT_EQ(encodeLen, 0);
971
972 msgText = "123456";
973 codingType = OHOS::Telephony::DataCodingScheme::DATA_CODING_UCS2;
974 encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
975 EXPECT_GT(encodeLen, 0);
976
977 codingType = OHOS::Telephony::DataCodingScheme::DATA_CODING_AUTO;
978 encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
979 EXPECT_GT(encodeLen, 0);
980
981 codingType = OHOS::Telephony::DataCodingScheme::DATA_CODING_EUCKR;
982 encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
983 EXPECT_GT(encodeLen, 0);
984 }
985
986 /**
987 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamCodec_0016
988 * @tc.name Test GsmSmsParamCodec EncodeAddressPdu
989 * @tc.desc Function test
990 */
991 HWTEST_F(BranchSmsPartTest, GsmSmsParamCodec_0016, Function | MediumTest | Level1)
992 {
993 auto gsmSmsParamCodec = std::make_shared<GsmSmsParamCodec>();
994 AddressNumber *pAddress = new AddressNumber();
995 std::string paramStr;
996
997 std::string smsc = "**21*1300555002012345";
998 memcpy_s(&pAddress->address, sizeof(pAddress->address), smsc.data(), smsc.length());
999 pAddress->address[smsc.length()] = '\0';
1000 pAddress->ton = TYPE_INTERNATIONAL;
1001 pAddress->npi = SMS_NPI_ISDN;
1002 EXPECT_FALSE(gsmSmsParamCodec->EncodeAddressPdu(pAddress, paramStr)); // second branch
1003 }
1004
1005 /**
1006 * @tc.number Telephony_SmsMmsGtest_GsmSmsParamCodec_0017
1007 * @tc.name Test GsmSmsParamCodec EncodeSmscPdu
1008 * @tc.desc Function test
1009 */
1010 HWTEST_F(BranchSmsPartTest, GsmSmsParamCodec_0017, Function | MediumTest | Level1)
1011 {
1012 /*
1013 * test third branch
1014 */
1015 auto gsmSmsParamCodec = std::make_shared<GsmSmsParamCodec>();
1016 EXPECT_NE(gsmSmsParamCodec, nullptr);
1017 const std::string smsc = "+17005550020";
1018 AddressNumber *pAddress = new AddressNumber();
1019 uint8_t encodeSmscAddr[MAX_SMSC_LEN];
1020 memset_s(encodeSmscAddr, sizeof(encodeSmscAddr), 0x00, sizeof(encodeSmscAddr));
1021 std::string decodeAddr;
1022 memcpy_s(&pAddress->address, sizeof(pAddress->address), smsc.data(), smsc.length());
1023 pAddress->address[smsc.length()] = '\0';
1024 pAddress->ton = TYPE_INTERNATIONAL;
1025 pAddress->npi = SMS_NPI_ISDN;
1026 uint8_t encodeSmscLen = 0;
1027 encodeSmscLen = gsmSmsParamCodec->EncodeSmscPdu(pAddress, encodeSmscAddr, sizeof(encodeSmscAddr));
1028 EXPECT_GT(encodeSmscLen, 0);
1029 }
1030
1031 /**
1032 * @tc.number Telephony_SmsMmsGtest_GsmSmsTpduCodec_0005
1033 * @tc.name Test GsmSmsTpduCodec EncodeSubmitPdu
1034 * @tc.desc Function test
1035 */
1036 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0005, Function | MediumTest | Level1)
1037 {
1038 auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1039 auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1040 encodeBuffer->data_[0] = 1;
1041 SmsSubmit *pSubmit = new SmsSubmit();
1042 /*
1043 * parameter check
1044 */
1045 auto encode = std::make_shared<GsmSmsTpduEncode>(nullptr, tpduCodec->paramCodec_, tpduCodec);
1046 EXPECT_FALSE(encode->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1047 auto encode1 = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, nullptr, tpduCodec);
1048 EXPECT_FALSE(encode1->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1049
1050 auto encode2 = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1051 EXPECT_TRUE(encode2->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1052 /*
1053 * third branch
1054 */
1055 const std::string smsc = "+17005550020324556627";
1056 memcpy_s(&pSubmit->destAddress.address, sizeof(pSubmit->destAddress.address), smsc.data(), smsc.length());
1057 pSubmit->destAddress.address[smsc.length()] = '\0';
1058 EXPECT_FALSE(encode2->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1059
1060 delete pSubmit;
1061 pSubmit = nullptr;
1062 }
1063
1064 /**
1065 * @tc.number Telephony_SmsMmsGtest_GsmSmsTpduCodec_0006
1066 * @tc.name Test GsmSmsTpduCodec EncodeSubmitPduPartData
1067 * @tc.desc Function test
1068 */
1069 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0006, Function | MediumTest | Level1)
1070 {
1071 auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1072 auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1073 SmsSubmit *pSubmit = new SmsSubmit();
1074 auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1075 EXPECT_NE(encode, nullptr);
1076 /*
1077 * parameter check
1078 */
1079 encodeBuffer->data_ = nullptr;
1080 EXPECT_FALSE(encode->EncodeSubmitPduPartData(*encodeBuffer, pSubmit));
1081 /*
1082 * third branch
1083 */
1084 encodeBuffer->index_ = 0;
1085 pSubmit->vpf = OHOS::Telephony::SmsVpf::SMS_VPF_ENHANCED;
1086 EXPECT_FALSE(encode->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1087
1088 encodeBuffer->data_ = nullptr;
1089 EXPECT_FALSE(encode->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1090
1091 delete pSubmit;
1092 pSubmit = nullptr;
1093 }
1094
1095 /**
1096 * @tc.number Telephony_SmsMmsGtest_GsmSmsTpduCodec_0007
1097 * @tc.name Test GsmSmsTpduCodec EncodeSubmitTpduType
1098 * @tc.desc Function test
1099 */
1100 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0007, Function | MediumTest | Level1)
1101 {
1102 auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1103 auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1104 SmsSubmit pSubmit;
1105 auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1106 EXPECT_NE(encode, nullptr);
1107
1108 /*
1109 * parameter check
1110 */
1111 pSubmit.bRejectDup = false;
1112 encodeBuffer->data_ = nullptr;
1113 uint16_t count = encodeBuffer->GetSize();
1114 encode->EncodeSubmitTpduType(*encodeBuffer, pSubmit);
1115 EXPECT_EQ(encodeBuffer->GetSize(), count);
1116 /*
1117 * third branch
1118 */
1119 auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1120 encodeBuffer2->data_[0] = 1;
1121 encodeBuffer2->bitIndex_ = 1;
1122 uint16_t count2 = encodeBuffer2->GetSize();
1123 encode->EncodeSubmitTpduType(*encodeBuffer2, pSubmit);
1124 EXPECT_EQ(encodeBuffer2->GetSize(), count2);
1125 }
1126
1127 /**
1128 * @tc.number Telephony_SmsMmsGtest_GsmSmsTpduCodec_0008
1129 * @tc.name Test GsmSmsTpduCodec EncodeSubmitTypePartData
1130 * @tc.desc Function test
1131 */
1132 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0008, Function | MediumTest | Level1)
1133 {
1134 auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1135 auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1136 SmsSubmit pSubmit;
1137 auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1138 EXPECT_NE(encode, nullptr);
1139 pSubmit.bStatusReport = false;
1140 pSubmit.bHeaderInd = false;
1141 pSubmit.bReplyPath = false;
1142 /*
1143 * SMS_VPF_ENHANCED
1144 */
1145 pSubmit.vpf = OHOS::Telephony::SmsVpf::SMS_VPF_ENHANCED;
1146 encodeBuffer->data_ = nullptr;
1147 uint16_t count1 = encodeBuffer->GetSize();
1148 encode->EncodeSubmitTypePartData(*encodeBuffer, pSubmit);
1149 EXPECT_EQ(encodeBuffer->GetSize(), count1);
1150
1151 auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1152 encodeBuffer2->data_[0] = 1;
1153 encodeBuffer2->index_ = 1;
1154 uint16_t count2 = encodeBuffer2->GetSize();
1155 encode->EncodeSubmitTypePartData(*encodeBuffer2, pSubmit);
1156 EXPECT_EQ(encodeBuffer2->GetSize(), count2);
1157 /*
1158 * SMS_VPF_RELATIVE
1159 */
1160 pSubmit.vpf = OHOS::Telephony::SmsVpf::SMS_VPF_ENHANCED;
1161 auto encodeBuffer3 = std::make_shared<SmsWriteBuffer>();
1162 encodeBuffer3->data_ = nullptr;
1163 uint16_t count3 = encodeBuffer3->GetSize();
1164 encode->EncodeSubmitTypePartData(*encodeBuffer3, pSubmit);
1165 EXPECT_EQ(encodeBuffer3->GetSize(), count3);
1166
1167 auto encodeBuffer4 = std::make_shared<SmsWriteBuffer>();
1168 encodeBuffer4->data_[0] = 1;
1169 encodeBuffer4->index_ = 1;
1170 uint16_t count4 = encodeBuffer4->GetSize();
1171 encode->EncodeSubmitTypePartData(*encodeBuffer4, pSubmit);
1172 EXPECT_EQ(encodeBuffer4->GetSize(), count4);
1173 /*
1174 * SMS_VPF_RELATIVE
1175 */
1176 pSubmit.vpf = OHOS::Telephony::SmsVpf::SMS_VPF_RELATIVE;
1177 auto encodeBuffer5 = std::make_shared<SmsWriteBuffer>();
1178 encodeBuffer5->data_ = nullptr;
1179 uint16_t count5 = encodeBuffer5->GetSize();
1180 encode->EncodeSubmitTypePartData(*encodeBuffer5, pSubmit);
1181 EXPECT_EQ(encodeBuffer5->GetSize(), count5);
1182
1183 auto encodeBuffer6 = std::make_shared<SmsWriteBuffer>();
1184 encodeBuffer6->data_[0] = 1;
1185 encodeBuffer6->index_ = 1;
1186 uint16_t count6 = encodeBuffer6->GetSize();
1187 encode->EncodeSubmitTypePartData(*encodeBuffer6, pSubmit);
1188 EXPECT_EQ(encodeBuffer6->GetSize(), count6);
1189 }
1190
1191 /**
1192 * @tc.number Telephony_SmsMmsGtest_GsmSmsTpduCodec_0009
1193 * @tc.name Test GsmSmsTpduCodec EncodeSubmitTypePartData
1194 * @tc.desc Function test
1195 */
1196 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0009, Function | MediumTest | Level1)
1197 {
1198 auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1199 auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1200 SmsSubmit pSubmit;
1201 auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1202 EXPECT_NE(encode, nullptr);
1203 pSubmit.bStatusReport = false;
1204 pSubmit.bHeaderInd = false;
1205 pSubmit.bReplyPath = false;
1206 /*
1207 * SMS_VPF_ABSOLUTE
1208 */
1209 pSubmit.vpf = OHOS::Telephony::SmsVpf::SMS_VPF_ABSOLUTE;
1210 auto encodeBuffer7 = std::make_shared<SmsWriteBuffer>();
1211 encodeBuffer7->data_ = nullptr;
1212 uint16_t count7 = encodeBuffer7->GetSize();
1213 encode->EncodeSubmitTypePartData(*encodeBuffer7, pSubmit);
1214 EXPECT_EQ(encodeBuffer7->GetSize(), count7);
1215
1216 auto encodeBuffer8 = std::make_shared<SmsWriteBuffer>();
1217 encodeBuffer8->data_[0] = 1;
1218 encodeBuffer8->index_ = 1;
1219 uint16_t count8 = encodeBuffer8->GetSize();
1220 encode->EncodeSubmitTypePartData(*encodeBuffer8, pSubmit);
1221 EXPECT_EQ(encodeBuffer8->GetSize(), count8);
1222 /*
1223 * SMS_VPF_NOT_PRESENT
1224 */
1225 pSubmit.vpf = OHOS::Telephony::SmsVpf::SMS_VPF_NOT_PRESENT;
1226 auto encodeBuffer9 = std::make_shared<SmsWriteBuffer>();
1227 encodeBuffer9->data_ = nullptr;
1228 uint16_t count9 = encodeBuffer9->GetSize();
1229 encode->EncodeSubmitTypePartData(*encodeBuffer9, pSubmit);
1230 EXPECT_EQ(encodeBuffer9->GetSize(), count9);
1231 }
1232
1233 /**
1234 * @tc.number Telephony_SmsMmsGtest_GsmSmsTpduCodec_0010
1235 * @tc.name Test GsmSmsTpduCodec EncodeSubmitTypeData
1236 * @tc.desc Function test
1237 */
1238 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0010, Function | MediumTest | Level1)
1239 {
1240 auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1241 auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1242 SmsSubmit pSubmit;
1243 auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1244 EXPECT_NE(encode, nullptr);
1245 /*
1246 * pSubmit->bStatusReport is true
1247 */
1248 pSubmit.bStatusReport = true;
1249 encode->EncodeSubmitTypePartData(*encodeBuffer, pSubmit);
1250 auto encodeBuffer1 = std::make_shared<SmsWriteBuffer>();
1251 encodeBuffer1->data_[0] = 1;
1252 encodeBuffer1->index_ = 1;
1253 uint16_t count1 = encodeBuffer1->GetSize();
1254 encode->EncodeSubmitTypePartData(*encodeBuffer1, pSubmit);
1255 EXPECT_EQ(encodeBuffer1->GetSize(), count1);
1256 /*
1257 * pSubmit.bHeaderInd is true
1258 */
1259 auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1260 pSubmit.bStatusReport = false;
1261 pSubmit.bHeaderInd = true;
1262 const std::string smsc = "17005550020";
1263 memcpy_s(&pSubmit.destAddress.address, sizeof(pSubmit.destAddress.address), smsc.data(), smsc.length());
1264 pSubmit.destAddress.address[smsc.length()] = '\0';
1265 encodeBuffer2->data_ = nullptr;
1266 uint16_t count2 = encodeBuffer2->GetSize();
1267 encode->EncodeSubmitTypePartData(*encodeBuffer2, pSubmit);
1268 EXPECT_EQ(encodeBuffer2->GetSize(), count2);
1269
1270 auto encodeBuffer3 = std::make_shared<SmsWriteBuffer>();
1271 encodeBuffer3->data_[0] = 1;
1272 encodeBuffer3->index_ = 1;
1273 uint16_t count3 = encodeBuffer3->GetSize();
1274 encode->EncodeSubmitTypePartData(*encodeBuffer3, pSubmit);
1275 EXPECT_EQ(encodeBuffer3->GetSize(), count3);
1276 /*
1277 * pSubmit.bReplyPath is true
1278 */
1279 pSubmit.bStatusReport = false;
1280 pSubmit.bHeaderInd = false;
1281 pSubmit.bReplyPath = true;
1282 auto encodeBuffer4 = std::make_shared<SmsWriteBuffer>();
1283 encodeBuffer4->data_ = nullptr;
1284 uint16_t count4 = encodeBuffer4->GetSize();
1285 encode->EncodeSubmitTypePartData(*encodeBuffer4, pSubmit);
1286 EXPECT_EQ(encodeBuffer4->GetSize(), count4);
1287
1288 auto encodeBuffer5 = std::make_shared<SmsWriteBuffer>();
1289 encodeBuffer5->data_[0] = 1;
1290 encodeBuffer5->index_ = 1;
1291 uint16_t count5 = encodeBuffer5->GetSize();
1292 encode->EncodeSubmitTypePartData(*encodeBuffer5, pSubmit);
1293 EXPECT_EQ(encodeBuffer5->GetSize(), count5);
1294 }
1295
1296 /**
1297 * @tc.number Telephony_SmsMmsGtest_GsmSmsTpduCodec_0011
1298 * @tc.name Test GsmSmsTpduCodec EncodeDeliverPdu
1299 * @tc.desc Function test
1300 */
1301 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0011, Function | MediumTest | Level1)
1302 {
1303 auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1304 auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1305 SmsDeliver *pDeliver = new SmsDeliver();
1306 auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1307 EXPECT_NE(encode, nullptr);
1308 /*
1309 * second branch
1310 */
1311 encodeBuffer->data_ = nullptr;
1312 EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer, pDeliver));
1313 /*
1314 * third branch pDeliver->bMoreMsg is false
1315 */
1316 auto encodeBuffer1 = std::make_shared<SmsWriteBuffer>();
1317 pDeliver->bMoreMsg = false;
1318 EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer1, pDeliver));
1319
1320 auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1321 encodeBuffer2->data_[0] = 1;
1322 encodeBuffer2->index_ = 1;
1323 EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer2, pDeliver));
1324 /*
1325 * fourth branch pDeliver->bStatusReport is true
1326 */
1327 pDeliver->bMoreMsg = true;
1328 pDeliver->bStatusReport = true;
1329 auto encodeBuffer3 = std::make_shared<SmsWriteBuffer>();
1330 EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer3, pDeliver));
1331
1332 auto encodeBuffer4 = std::make_shared<SmsWriteBuffer>();
1333 encodeBuffer4->data_[0] = 1;
1334 encodeBuffer4->index_ = 1;
1335 EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer4, pDeliver));
1336 /*
1337 * fifth branch pDeliver->bHeaderInd is true
1338 */
1339 auto encodeBuffer5 = std::make_shared<SmsWriteBuffer>();
1340 pDeliver->bStatusReport = false;
1341 pDeliver->bHeaderInd = true;
1342 EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer5, pDeliver));
1343
1344 auto encodeBuffer6 = std::make_shared<SmsWriteBuffer>();
1345 encodeBuffer6->data_[0] = 1;
1346 encodeBuffer6->index_ = 1;
1347 EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer6, pDeliver));
1348
1349 delete pDeliver;
1350 pDeliver = nullptr;
1351 }
1352
1353 /**
1354 * @tc.number Telephony_SmsMmsGtest_GsmSmsTpduCodec_0012
1355 * @tc.name Test GsmSmsTpduCodec EncodeDeliverPartData
1356 * @tc.desc Function test
1357 */
1358 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0012, Function | MediumTest | Level1)
1359 {
1360 auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1361 auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1362 SmsDeliver *pDeliver = new SmsDeliver();
1363 /*
1364 * parameter check
1365 */
1366 auto encode0 = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, nullptr, tpduCodec);
1367 EXPECT_NE(encode0, nullptr);
1368 EXPECT_FALSE(encode0->EncodeDeliverPartData(*encodeBuffer, pDeliver));
1369
1370 auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1371 EXPECT_NE(encode, nullptr);
1372 /*
1373 * pDeliver->bReplyPath is true
1374 */
1375 pDeliver->bReplyPath = true;
1376 encodeBuffer->data_ = nullptr;
1377 EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer, pDeliver));
1378
1379 auto encodeBuffer1 = std::make_shared<SmsWriteBuffer>();
1380 encodeBuffer1->data_[0] = 1;
1381 encodeBuffer1->index_ = 1;
1382 EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer, pDeliver));
1383 /*
1384 * third branch
1385 */
1386 auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1387 pDeliver->bReplyPath = false;
1388 const std::string smsc = "17005550020111111111";
1389 memcpy_s(&pDeliver->originAddress.address, sizeof(pDeliver->originAddress.address), smsc.data(), smsc.length());
1390 pDeliver->originAddress.address[smsc.length()] = '\0';
1391 EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer2, pDeliver));
1392 /*
1393 * fourth branch
1394 */
1395 auto encodeBuffer3 = std::make_shared<SmsWriteBuffer>();
1396 encodeBuffer3->data_[0] = 1;
1397 EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer3, pDeliver));
1398
1399 delete pDeliver;
1400 pDeliver = nullptr;
1401 }
1402
1403 /**
1404 * @tc.number Telephony_SmsMmsGtest_GsmSmsTpduCodec_0013
1405 * @tc.name Test GsmSmsTpduCodec EncodeDeliverData
1406 * @tc.desc Function test
1407 */
1408 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0013, Function | MediumTest | Level1)
1409 {
1410 auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1411 auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1412 SmsDeliver *pDeliver = new SmsDeliver();
1413 /*
1414 * parameter check
1415 */
1416 auto encode0 = std::make_shared<GsmSmsTpduEncode>(nullptr, tpduCodec->paramCodec_, tpduCodec);
1417 EXPECT_NE(encode0, nullptr);
1418 EXPECT_FALSE(encode0->EncodeDeliverData(*encodeBuffer, pDeliver));
1419 /*
1420 * second branch
1421 */
1422 auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1423 EXPECT_NE(encode, nullptr);
1424 encodeBuffer->data_ = nullptr;
1425 EXPECT_FALSE(encode->EncodeDeliverData(*encodeBuffer, pDeliver));
1426
1427 auto encodeBuffer1 = std::make_shared<SmsWriteBuffer>();
1428 encodeBuffer->index_ = 1;
1429 EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer1, pDeliver));
1430 /*
1431 * main branch
1432 */
1433 auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1434 encodeBuffer2->data_[0] = 1;
1435 encodeBuffer2->index_ = 1;
1436 EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer2, pDeliver));
1437
1438 delete pDeliver;
1439 pDeliver = nullptr;
1440 }
1441
1442 /**
1443 * @tc.number Telephony_SmsMmsGtest_SmsBaseMessage_0001
1444 * @tc.name Test SmsBaseMessage
1445 * @tc.desc Function test
1446 */
1447 HWTEST_F(BranchSmsPartTest, SmsBaseMessage_0001, Function | MediumTest | Level1)
1448 {
1449 auto smsBaseMessage = std::make_shared<GsmSmsMessage>();
1450 smsBaseMessage->ConvertMessageClass(SmsMessageClass::SMS_SIM_MESSAGE);
1451 smsBaseMessage->ConvertMessageClass(SmsMessageClass::SMS_INSTANT_MESSAGE);
1452 smsBaseMessage->ConvertMessageClass(SmsMessageClass::SMS_OPTIONAL_MESSAGE);
1453 smsBaseMessage->ConvertMessageClass(SmsMessageClass::SMS_FORWARD_MESSAGE);
1454 smsBaseMessage->ConvertMessageClass(SmsMessageClass::SMS_CLASS_UNKNOWN);
1455 SplitInfo split;
1456 DataCodingScheme codingType = DataCodingScheme::DATA_CODING_7BIT;
1457 smsBaseMessage->ConvertSpiltToUtf8(split, codingType);
1458 split.encodeData.push_back(1);
1459 codingType = DataCodingScheme::DATA_CODING_UCS2;
1460 smsBaseMessage->ConvertSpiltToUtf8(split, codingType);
1461 codingType = DataCodingScheme::DATA_CODING_AUTO;
1462 smsBaseMessage->ConvertSpiltToUtf8(split, codingType);
1463 smsBaseMessage->smsUserData_.headerCnt = 1;
1464 smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_CONCAT_8BIT;
1465 EXPECT_FALSE(smsBaseMessage->GetConcatMsg() == nullptr);
1466 smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_CONCAT_16BIT;
1467 EXPECT_FALSE(smsBaseMessage->GetConcatMsg() == nullptr);
1468 smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_APP_PORT_8BIT;
1469 EXPECT_FALSE(smsBaseMessage->GetPortAddress() == nullptr);
1470 smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_APP_PORT_16BIT;
1471 EXPECT_FALSE(smsBaseMessage->GetPortAddress() == nullptr);
1472 smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_SPECIAL_SMS;
1473 EXPECT_FALSE(smsBaseMessage->GetSpecialSmsInd() == nullptr);
1474 smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_APP_PORT_8BIT;
1475 EXPECT_FALSE(smsBaseMessage->IsWapPushMsg());
1476 MSG_LANGUAGE_ID_T langId = 1;
1477 codingType = DataCodingScheme::DATA_CODING_7BIT;
1478 EXPECT_GT(smsBaseMessage->GetMaxSegmentSize(codingType, 1, true, langId, 1), 0);
1479 EXPECT_GT(smsBaseMessage->GetSegmentSize(codingType, 1, true, langId), 0);
1480 codingType = DataCodingScheme::DATA_CODING_ASCII7BIT;
1481 EXPECT_GT(smsBaseMessage->GetMaxSegmentSize(codingType, 1, true, langId, 1), 0);
1482 EXPECT_GT(smsBaseMessage->GetSegmentSize(codingType, 1, true, langId), 0);
1483 codingType = DataCodingScheme::DATA_CODING_8BIT;
1484 EXPECT_GT(smsBaseMessage->GetMaxSegmentSize(codingType, 1, true, langId, 1), 0);
1485 EXPECT_GT(smsBaseMessage->GetSegmentSize(codingType, 1, true, langId), 0);
1486 codingType = DataCodingScheme::DATA_CODING_UCS2;
1487 EXPECT_GT(smsBaseMessage->GetMaxSegmentSize(codingType, 1, true, langId, 1), 0);
1488 EXPECT_GT(smsBaseMessage->GetSegmentSize(codingType, 1, true, langId), 0);
1489 std::string message = "";
1490 LengthInfo lenInfo;
1491 EXPECT_GE(smsBaseMessage->GetSmsSegmentsInfo(message, true, lenInfo), 0);
1492 message = "123";
1493 EXPECT_EQ(smsBaseMessage->GetSmsSegmentsInfo(message, true, lenInfo), TELEPHONY_ERR_SUCCESS);
1494 EXPECT_EQ(smsBaseMessage->GetSmsSegmentsInfo(message, false, lenInfo), TELEPHONY_ERR_SUCCESS);
1495 }
1496
1497 /**
1498 * @tc.number Telephony_SmsMmsGtest_SmsBaseMessage_0002
1499 * @tc.name Test SmsBaseMessage
1500 * @tc.desc Function test
1501 */
1502 HWTEST_F(BranchSmsPartTest, SmsBaseMessage_0002, Function | MediumTest | Level1)
1503 {
1504 auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
1505 std::vector<struct SplitInfo> splitResult;
1506 DataCodingScheme codingType = DATA_CODING_AUTO;
1507 std::string text = {0xe4, 0xbd, 0xa0, 0xe4, 0xbd, 0xa0, 0xe4, 0xbd, 0xa0, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5,
1508 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1509 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1510 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1511 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1512 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1513 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1514 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1515 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1516 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3};
1517 std::string desAddr = "";
1518 gsmSmsMessage->SplitMessage(splitResult, text, false, codingType, false, desAddr);
1519 std::vector<unsigned char> expect1 = {0x4f, 0x60, 0x4f, 0x60, 0x4f, 0x60, 0xd8, 0x3e, 0xdd, 0x73,
1520 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1521 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1522 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1523 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1524 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1525 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1526 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1527 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73};
1528 std::vector<unsigned char> expect2 = {0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1529 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73};
1530 EXPECT_TRUE(splitResult[0].encodeData == expect1);
1531 EXPECT_TRUE(splitResult[1].encodeData == expect2);
1532 }
1533
1534 /**
1535 * @tc.number Telephony_SmsMmsGtest_SmsPersistHelper_0002
1536 * @tc.name Test SmsPersistHelper
1537 * @tc.desc Function test
1538 */
1539 HWTEST_F(BranchSmsPartTest, SmsPersistHelper_0002, Function | MediumTest | Level1)
1540 {
1541 auto smsPersistHelper = DelayedSingleton<SmsPersistHelper>::GetInstance();
1542 smsPersistHelper->CreateSmsHelper();
1543 AppExecFwk::InnerEvent::Pointer event = AppExecFwk::InnerEvent::Get(0, 0);
1544 smsPersistHelper->ProcessEvent(event);
1545 uint32_t releaseDataShareHelperEventId = 10000;
1546 event = AppExecFwk::InnerEvent::Get(releaseDataShareHelperEventId, 0);
1547 smsPersistHelper->ProcessEvent(event);
1548 EXPECT_TRUE(smsPersistHelper->smsDataShareHelper_ == nullptr);
1549 smsPersistHelper->RemoveEvent(releaseDataShareHelperEventId);
1550 }
1551
1552 /**
1553 * @tc.number Telephony_SmsMmsGtest_SmsPersistHelper_0003
1554 * @tc.name Test SmsPersistHelper
1555 * @tc.desc Function test
1556 */
1557 HWTEST_F(BranchSmsPartTest, SmsPersistHelper_0003, Function | MediumTest | Level1)
1558 {
1559 auto dataShareHelperMock = std::make_shared<DataShareHelperMock>();
1560 DelayedSingleton<SmsPersistHelper>::GetInstance()->smsDataShareHelper_ = dataShareHelperMock;
1561 EXPECT_CALL(*dataShareHelperMock, Query(_, _, _, _))
1562 .WillRepeatedly(Return(nullptr));
1563 EXPECT_CALL(*dataShareHelperMock, Release())
1564 .WillRepeatedly(Return(true));
1565 DataShare::DataShareValuesBucket values;
1566 uint16_t dataBaseId;
1567 DataShare::DataSharePredicates predicates;
1568 EXPECT_FALSE(DelayedSingleton<SmsPersistHelper>::GetInstance()->QuerySession(predicates, dataBaseId, dataBaseId));
1569 EXPECT_FALSE(DelayedSingleton<SmsPersistHelper>::GetInstance()->QuerySmsMmsForId(predicates, dataBaseId));
1570 std::vector<SmsReceiveIndexer> indexers;
1571 EXPECT_FALSE(DelayedSingleton<SmsPersistHelper>::GetInstance()->Query(predicates, indexers));
1572 EXPECT_FALSE(DelayedSingleton<SmsPersistHelper>::GetInstance()->QueryMaxGroupId(predicates, dataBaseId));
1573 DelayedSingleton<SmsPersistHelper>::GetInstance()->ReleaseDataShareHelper();
1574 }
1575
1576 /**
1577 * @tc.number Telephony_SmsMmsGtest_SmsReceiveHandler_0001
1578 * @tc.name Test SmsReceiveHandler
1579 * @tc.desc Function test
1580 */
1581 HWTEST_F(BranchSmsPartTest, SmsReceiveHandler_0001, Function | MediumTest | Level1)
1582 {
1583 auto dataShareHelperMock = std::make_shared<DataShareHelperMock>();
1584 DelayedSingleton<SmsPersistHelper>::GetInstance()->smsDataShareHelper_ = dataShareHelperMock;
1585 auto resultSet = std::make_shared<DataShareResultSetMock>();
1586 std::shared_ptr<SmsReceiveHandler> smsReceiveHandler = std::make_shared<GsmSmsReceiveHandler>(0);
1587 auto reliabilityHandler = std::make_shared<SmsReceiveReliabilityHandler>(0);
1588 auto indexer = std::make_shared<SmsReceiveIndexer>();
1589 indexer->msgCount_ = 1;
1590 auto pdus = std::make_shared<vector<string>>();
1591 EXPECT_CALL(*dataShareHelperMock, Query(_, _, _, _))
1592 .WillRepeatedly(Return(resultSet));
1593 EXPECT_CALL(*resultSet, GoToFirstRow())
1594 .WillRepeatedly(Return(0));
1595 EXPECT_CALL(*resultSet, GoToNextRow())
1596 .WillOnce(Return(0))
1597 .WillRepeatedly(Return(-1));
1598 EXPECT_CALL(*resultSet, GetColumnIndex(_, _))
__anon521935340202(const std::string &columnName, int &columnIndex) 1599 .WillRepeatedly(Invoke([](const std::string &columnName, int &columnIndex) -> int {
1600 if (columnName == SmsSubsection::SIZE) {
1601 columnIndex = 1;
1602 } else if (columnName == SmsSubsection::SUBSECTION_INDEX) {
1603 columnIndex = 2;
1604 }
1605 return 0;
1606 }));
1607 EXPECT_CALL(*resultSet, GetInt(_, _))
__anon521935340302(int columnIndex, int &value) 1608 .WillRepeatedly(Invoke([](int columnIndex, int &value) -> int {
1609 if (columnIndex == 1) {
1610 value = 1;
1611 } else if (columnIndex == 2) {
1612 value = 2;
1613 }
1614 return 0;
1615 }));
1616 EXPECT_CALL(*resultSet, GetString(_, _))
1617 .WillRepeatedly(Return(0));
1618 EXPECT_CALL(*resultSet, Close())
1619 .WillRepeatedly(Return(0));
1620 EXPECT_CALL(*dataShareHelperMock, Release())
1621 .WillRepeatedly(Return(0));
1622 EXPECT_FALSE(smsReceiveHandler->CombineMultiPageMessage(indexer, pdus, reliabilityHandler));
1623 DelayedSingleton<SmsPersistHelper>::GetInstance()->ReleaseDataShareHelper();
1624 }
1625
1626 /**
1627 * @tc.number Telephony_SmsMmsGtest_SmsReceiveHandler_0002
1628 * @tc.name Test SmsReceiveHandler
1629 * @tc.desc Function test
1630 */
1631 HWTEST_F(BranchSmsPartTest, SmsReceiveHandler_0002, Function | MediumTest | Level1)
1632 {
1633 auto dataShareHelperMock = std::make_shared<DataShareHelperMock>();
1634 DelayedSingleton<SmsPersistHelper>::GetInstance()->smsDataShareHelper_ = dataShareHelperMock;
1635 auto resultSet = std::make_shared<DataShareResultSetMock>();
1636 std::shared_ptr<SmsReceiveHandler> smsReceiveHandler = std::make_shared<GsmSmsReceiveHandler>(0);
1637 auto reliabilityHandler = std::make_shared<SmsReceiveReliabilityHandler>(0);
1638 auto indexer = std::make_shared<SmsReceiveIndexer>();
1639 indexer->msgCount_ = 4;
1640 auto pdus = std::make_shared<vector<string>>();
1641 EXPECT_CALL(*dataShareHelperMock, Query(_, _, _, _))
1642 .WillRepeatedly(Return(resultSet));
1643 EXPECT_CALL(*resultSet, GoToFirstRow())
1644 .WillRepeatedly(Return(0));
1645 EXPECT_CALL(*resultSet, GoToNextRow())
1646 .WillOnce(Return(0))
1647 .WillRepeatedly(Return(-1));
1648 EXPECT_CALL(*resultSet, GetColumnIndex(_, _))
1649 .WillRepeatedly(Return(0));
1650 EXPECT_CALL(*resultSet, GetInt(_, _))
1651 .WillRepeatedly(Return(-1));
1652 EXPECT_CALL(*resultSet, GetString(_, _))
1653 .WillRepeatedly(Return(-1));
1654 EXPECT_CALL(*resultSet, Close())
1655 .WillRepeatedly(Return(0));
1656 EXPECT_CALL(*dataShareHelperMock, Release())
1657 .WillRepeatedly(Return(0));
1658 EXPECT_FALSE(smsReceiveHandler->CombineMultiPageMessage(indexer, pdus, reliabilityHandler));
1659 DelayedSingleton<SmsPersistHelper>::GetInstance()->ReleaseDataShareHelper();
1660 }
1661
1662 /**
1663 * @tc.number Telephony_SmsMmsGtest_SmsReceiveHandler_0003
1664 * @tc.name Test SmsReceiveHandler
1665 * @tc.desc Function test
1666 */
1667 HWTEST_F(BranchSmsPartTest, SmsReceiveHandler_0003, Function | MediumTest | Level1)
1668 {
1669 auto dataShareHelperMock = std::make_shared<DataShareHelperMock>();
1670 DelayedSingleton<SmsPersistHelper>::GetInstance()->smsDataShareHelper_ = dataShareHelperMock;
1671 auto resultSet = std::make_shared<DataShareResultSetMock>();
1672 std::shared_ptr<SmsReceiveHandler> smsReceiveHandler = std::make_shared<GsmSmsReceiveHandler>(0);
1673 auto reliabilityHandler = std::make_shared<SmsReceiveReliabilityHandler>(0);
1674 auto indexer = std::make_shared<SmsReceiveIndexer>();
1675 indexer->msgCount_ = 1;
1676 auto pdus = std::make_shared<vector<string>>();
1677 EXPECT_CALL(*dataShareHelperMock, Query(_, _, _, _))
1678 .WillRepeatedly(Return(resultSet));
1679 EXPECT_CALL(*resultSet, GoToFirstRow())
1680 .WillRepeatedly(Return(0));
1681 EXPECT_CALL(*resultSet, GoToNextRow())
1682 .WillOnce(Return(0))
1683 .WillRepeatedly(Return(-1));
1684 EXPECT_CALL(*resultSet, GetColumnIndex(_, _))
1685 .WillRepeatedly(Return(0));
1686 EXPECT_CALL(*resultSet, GetInt(_, _))
__anon521935340402(int columnIndex, int &value) 1687 .WillRepeatedly(Invoke([](int columnIndex, int &value) -> int {
1688 value = 1;
1689 return 0;
1690 }));
1691 EXPECT_CALL(*resultSet, GetString(_, _))
1692 .WillRepeatedly(Return(0));
1693 EXPECT_CALL(*resultSet, Close())
1694 .WillRepeatedly(Return(0));
1695 EXPECT_CALL(*dataShareHelperMock, Release())
1696 .WillRepeatedly(Return(0));
1697 EXPECT_FALSE(smsReceiveHandler->CombineMultiPageMessage(indexer, pdus, reliabilityHandler));
1698 DelayedSingleton<SmsPersistHelper>::GetInstance()->ReleaseDataShareHelper();
1699 }
1700
1701 /**
1702 * @tc.number Telephony_SmsMmsGtest_SmsReceiveHandler_0004
1703 * @tc.name Test SmsReceiveHandler
1704 * @tc.desc Function test
1705 */
1706 HWTEST_F(BranchSmsPartTest, SmsReceiveHandler_0004, Function | MediumTest | Level1)
1707 {
1708 std::shared_ptr<SmsReceiveHandler> smsReceiveHandler = std::make_shared<GsmSmsReceiveHandler>(0);
1709 EXPECT_TRUE(smsReceiveHandler != nullptr);
1710 smsReceiveHandler->smsLockSerialNum_ = 0;
1711 smsReceiveHandler->smsRunningLockCount_ = 0;
1712 #ifdef ABILITY_POWER_SUPPORT
1713 smsReceiveHandler->smsRunningLock_ = nullptr;
1714 #endif
1715 AppExecFwk::InnerEvent::Pointer event =
1716 AppExecFwk::InnerEvent::Get(SmsReceiveHandler::RUNNING_LOCK_TIMEOUT_EVENT_ID, -1);
1717 smsReceiveHandler->ProcessEvent(event);
1718 event = AppExecFwk::InnerEvent::Get(SmsReceiveHandler::RUNNING_LOCK_TIMEOUT_EVENT_ID, 0);
1719 smsReceiveHandler->ProcessEvent(event);
1720 event = AppExecFwk::InnerEvent::Get(SmsReceiveHandler::DELAY_RELEASE_RUNNING_LOCK_EVENT_ID, 0);
1721 smsReceiveHandler->ProcessEvent(event);
1722 event = AppExecFwk::InnerEvent::Get(SmsReceiveHandler::RETRY_CONNECT_DATASHARE_EVENT_ID, 0);
1723 smsReceiveHandler->ProcessEvent(event);
1724 smsReceiveHandler->ReduceRunningLock();
1725 smsReceiveHandler->ReleaseRunningLock();
1726 smsReceiveHandler->ApplyRunningLock();
1727 #ifdef ABILITY_POWER_SUPPORT
1728 EXPECT_EQ(smsReceiveHandler->smsRunningLockCount_, 1);
1729 smsReceiveHandler->ApplyRunningLock();
1730 EXPECT_EQ(smsReceiveHandler->smsRunningLockCount_, 2);
1731 smsReceiveHandler->ReduceRunningLock();
1732 EXPECT_EQ(smsReceiveHandler->smsRunningLockCount_, 1);
1733 smsReceiveHandler->ReduceRunningLock();
1734 EXPECT_EQ(smsReceiveHandler->smsRunningLockCount_, 0);
1735 #endif
1736 }
1737
1738 /**
1739 * @tc.number Telephony_SmsMmsGtest_SmsReceiveHandler_0005
1740 * @tc.name Test SmsReceiveHandler
1741 * @tc.desc Function test
1742 */
1743 HWTEST_F(BranchSmsPartTest, SmsReceiveHandler_0005, Function | MediumTest | Level1)
1744 {
1745 std::shared_ptr<SmsReceiveIndexer> indexer = nullptr;
1746 std::shared_ptr<SmsReceiveHandler> smsReceiveHandler = std::make_shared<GsmSmsReceiveHandler>(0);
1747 smsReceiveHandler->UpdateMultiPageMessage(indexer, nullptr);
1748 EXPECT_FALSE(smsReceiveHandler->IsRepeatedMessagePart(indexer));
1749 indexer = std::make_shared<SmsReceiveIndexer>();
1750 smsReceiveHandler->UpdateMultiPageMessage(indexer, nullptr);
1751 indexer->msgCount_ = 2;
1752 smsReceiveHandler->CombineMessagePart(indexer);
1753 auto dataShareHelperMock = std::make_shared<DataShareHelperMock>();
1754 DelayedSingleton<SmsPersistHelper>::GetInstance()->smsDataShareHelper_ = dataShareHelperMock;
1755 auto resultSet = std::make_shared<DataShareResultSetMock>();
1756 auto reliabilityHandler = std::make_shared<SmsReceiveReliabilityHandler>(0);
1757 auto pdus = std::make_shared<vector<string>>();
1758 smsReceiveHandler->UpdateMultiPageMessage(indexer, pdus);
1759 EXPECT_CALL(*dataShareHelperMock, Query(_, _, _, _))
1760 .WillRepeatedly(Return(resultSet));
1761 EXPECT_CALL(*resultSet, GoToFirstRow())
1762 .WillRepeatedly(Return(0));
1763 EXPECT_CALL(*resultSet, GoToNextRow())
1764 .WillOnce(Return(0))
1765 .WillRepeatedly(Return(-1));
1766 EXPECT_CALL(*resultSet, GetColumnIndex(_, _))
1767 .WillRepeatedly(Return(0));
1768 EXPECT_CALL(*resultSet, GetInt(_, _))
__anon521935340502(int columnIndex, int &value) 1769 .WillRepeatedly(Invoke([](int columnIndex, int &value) -> int {
1770 value = 1;
1771 return 0;
1772 }));
1773 EXPECT_CALL(*resultSet, GetString(_, _))
__anon521935340602(int columnIndex, std::string &value) 1774 .WillRepeatedly(Invoke([](int columnIndex, std::string &value) -> int {
1775 value = "test";
1776 return 0;
1777 }));
1778 EXPECT_CALL(*resultSet, Close())
1779 .WillRepeatedly(Return(0));
1780 EXPECT_CALL(*dataShareHelperMock, Release())
1781 .WillRepeatedly(Return(true));
1782 EXPECT_TRUE(smsReceiveHandler->CombineMultiPageMessage(indexer, pdus, reliabilityHandler));
1783 EXPECT_FALSE(smsReceiveHandler->IsRepeatedMessagePart(indexer));
1784 std::shared_ptr<GsmSmsMessage> message = std::make_shared<GsmSmsMessage>();
1785 smsReceiveHandler->HandleReceivedSmsWithoutDataShare(message);
1786 indexer->msgSeqId_ = 1;
1787 EXPECT_TRUE(smsReceiveHandler->IsRepeatedMessagePart(indexer));
1788 std::make_shared<SmsReceiveReliabilityHandler>(0)->SmsReceiveReliabilityProcessing();
1789 DelayedSingleton<SmsPersistHelper>::GetInstance()->ReleaseDataShareHelper();
1790 }
1791
1792 /**
1793 * @tc.number Telephony_SmsMmsGtest_SmsReceiveReliabilityHandler_0001
1794 * @tc.name Test SmsReceiveReliabilityHandler
1795 * @tc.desc Function test
1796 */
1797 HWTEST_F(BranchSmsPartTest, SmsReceiveReliabilityHandler_0001, Function | MediumTest | Level1)
1798 {
1799 auto reliabilityHandler = std::make_shared<SmsReceiveReliabilityHandler>(0);
1800 auto indexer = std::make_shared<SmsReceiveIndexer>();
1801 auto pdus = std::make_shared<vector<string>>();
1802 indexer->originatingAddress_ = "10659401";
1803 reliabilityHandler->SendBroadcast(indexer, pdus);
1804 indexer->originatingAddress_ = "8610659401";
1805 reliabilityHandler->SendBroadcast(indexer, pdus);
1806 indexer->originatingAddress_ = "+8610659401";
1807 reliabilityHandler->SendBroadcast(indexer, pdus);
1808 indexer->originatingAddress_ = "+86106594011";
1809 reliabilityHandler->SendBroadcast(indexer, pdus);
1810 reliabilityHandler->HiSysEventCBResult(false);
1811 DelayedSingleton<SmsHiSysEvent>::GetInstance()->smsBroadcastStartTime_ = 0;
1812 reliabilityHandler->HiSysEventCBResult(true);
1813 EXPECT_NE(DelayedSingleton<SmsHiSysEvent>::GetInstance()->smsBroadcastStartTime_, 0);
1814 }
1815
1816 /**
1817 * @tc.number Telephony_SmsMmsGtest_SmsReceiveReliabilityHandler_0002
1818 * @tc.name Test SmsReceiveReliabilityHandler
1819 * @tc.desc Function test
1820 */
1821 HWTEST_F(BranchSmsPartTest, SmsReceiveReliabilityHandler_0002, Function | MediumTest | Level1)
1822 {
1823 auto reliabilityHandler = std::make_shared<SmsReceiveReliabilityHandler>(0);
1824 int32_t smsPagesCount = 0;
1825 std::vector<SmsReceiveIndexer> dbIndexers;
1826 SmsReceiveIndexer indexer;
1827 indexer.msgRefId_ = 1;
1828 indexer.msgSeqId_ = 1;
1829 std::vector<uint8_t> pdu = { 8, 145, 104, 49, 8, 32, 1, 5, 240, 68, 13, 145, 104, 145, 39, 32, 49, 100, 240,
1830 0, 0, 82, 64, 80, 34, 145, 17, 35, 160, 5, 0, 3, 1, 2, 1, 98, 177, 88, 44, 22, 139, 197, 98, 177, 88, 44,
1831 22, 139, 197, 98, 177, 152, 44, 54, 171, 209, 108, 55, 25, 142, 54, 163, 213, 108, 180, 90, 12, 55, 187,
1832 213, 104, 177, 88, 44, 22, 139, 197, 98, 177, 88, 44, 22, 139, 197, 98, 177, 88, 76, 22, 155, 213, 104,
1833 182, 155, 12, 71, 155, 209, 106, 54, 90, 45, 134, 155, 221, 106, 180, 88, 44, 22, 139, 197, 98, 177, 88,
1834 44, 22, 139, 197, 98, 177, 88, 44, 38, 139, 205, 106, 52, 219, 77, 134, 163, 205, 104, 53, 27, 173, 22,
1835 195, 205, 110, 53, 90, 44, 22, 139, 197, 98, 177, 88, 44, 22, 139, 197, 98, 177, 88, 44, 22, 147, 197, 102,
1836 53, 154, 237, 38, 195, 209, 102 };
1837 indexer.pdu_ = pdu;
1838 dbIndexers.push_back(indexer);
1839 indexer.msgSeqId_ = -1;
1840 dbIndexers.push_back(indexer);
1841 indexer.msgSeqId_ = MAX_SEGMENT_NUM + 1;
1842 dbIndexers.push_back(indexer);
1843 indexer.msgRefId_ = 2;
1844 dbIndexers.push_back(indexer);
1845 indexer.msgRefId_ = 1;
1846 indexer.pdu_ = {};
1847 dbIndexers.push_back(indexer);
1848 std::shared_ptr<std::vector<std::string>> userDataRaws = std::make_shared<std::vector<std::string>>();
1849 userDataRaws->assign(MAX_SEGMENT_NUM, "");
1850 reliabilityHandler->GetWapPushUserDataMultipage(smsPagesCount, dbIndexers, -1, userDataRaws);
1851 reliabilityHandler->GetWapPushUserDataMultipage(smsPagesCount, dbIndexers, 100, userDataRaws);
1852 reliabilityHandler->GetWapPushUserDataMultipage(smsPagesCount, dbIndexers, 1, userDataRaws);
1853 reliabilityHandler->GetWapPushUserDataMultipage(smsPagesCount, dbIndexers, 2, userDataRaws);
1854 reliabilityHandler->GetWapPushUserDataMultipage(smsPagesCount, dbIndexers, 0, userDataRaws);
1855 EXPECT_EQ(smsPagesCount, 1);
1856 reliabilityHandler->GetWapPushUserDataMultipage(smsPagesCount, dbIndexers, 0, userDataRaws);
1857 reliabilityHandler->GetWapPushUserDataMultipage(smsPagesCount, dbIndexers, 0, userDataRaws);
1858 EXPECT_EQ(smsPagesCount, 2);
1859 reliabilityHandler->DeleteMessageFormDb(0, 1);
1860 }
1861
1862 /**
1863 * @tc.number Telephony_SmsMmsGtest_SmsReceiveReliabilityHandler_0003
1864 * @tc.name Test SmsReceiveReliabilityHandler
1865 * @tc.desc Function test
1866 */
1867 HWTEST_F(BranchSmsPartTest, SmsReceiveReliabilityHandler_0003, Function | MediumTest | Level1)
1868 {
1869 auto reliabilityHandler = std::make_shared<SmsReceiveReliabilityHandler>(0);
1870 std::vector<SmsReceiveIndexer> dbIndexers;
1871 SmsReceiveIndexer indexer;
1872 indexer.destPort_ = 2948;
1873 indexer.msgCount_ = 1;
1874 std::vector<uint8_t> pdu = { 8, 145, 104, 49, 8, 32, 1, 5, 240, 68, 13, 145, 104, 145, 39, 32, 49, 100, 240,
1875 0, 0, 82, 64, 80, 34, 145, 17, 35, 160, 5, 0, 3, 1, 2, 1, 98, 177, 88, 44, 22, 139, 197, 98, 177, 88, 44,
1876 22, 139, 197, 98, 177, 152, 44, 54, 171, 209, 108, 55, 25, 142, 54, 163, 213, 108, 180, 90, 12, 55, 187,
1877 213, 104, 177, 88, 44, 22, 139, 197, 98, 177, 88, 44, 22, 139, 197, 98, 177, 88, 76, 22, 155, 213, 104,
1878 182, 155, 12, 71, 155, 209, 106, 54, 90, 45, 134, 155, 221, 106, 180, 88, 44, 22, 139, 197, 98, 177, 88,
1879 44, 22, 139, 197, 98, 177, 88, 44, 38, 139, 205, 106, 52, 219, 77, 134, 163, 205, 104, 53, 27, 173, 22,
1880 195, 205, 110, 53, 90, 44, 22, 139, 197, 98, 177, 88, 44, 22, 139, 197, 98, 177, 88, 44, 22, 147, 197, 102,
1881 53, 154, 237, 38, 195, 209, 102 };
1882 indexer.pdu_ = pdu;
1883 dbIndexers.push_back(indexer);
1884 indexer.msgCount_ = 2;
1885 dbIndexers.push_back(indexer);
1886 reliabilityHandler->CheckUnReceiveWapPush(dbIndexers);
1887 EXPECT_EQ(dbIndexers.size(), 0);
1888 }
1889
1890 /**
1891 * @tc.number Telephony_SmsMmsGtest_SmsNetworkPolicyManager_0001
1892 * @tc.name Test SmsNetworkPolicyManager
1893 * @tc.desc Function test
1894 */
1895 HWTEST_F(BranchSmsPartTest, SmsNetworkPolicyManager_0001, Function | MediumTest | Level1)
1896 {
1897 SmsNetworkPolicyManager manager(0);
1898 AppExecFwk::InnerEvent::Pointer event = AppExecFwk::InnerEvent::Get(1234567);
1899 manager.ProcessEvent(event);
1900 auto dataShareHelperMock = std::make_shared<DataShareHelperMock>();
1901 DelayedSingleton<SmsPersistHelper>::GetInstance()->smsDataShareHelper_ = dataShareHelperMock;
1902 EXPECT_CALL(*dataShareHelperMock, Delete(_, _))
1903 .WillRepeatedly(Return(0));
1904 EXPECT_CALL(*dataShareHelperMock, Release())
1905 .WillRepeatedly(Return(true));
1906 event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_FACTORY_RESET);
1907 manager.ProcessEvent(event);
1908 DelayedSingleton<SmsPersistHelper>::GetInstance()->ReleaseDataShareHelper();
1909 event = nullptr;
1910 manager.ProcessEvent(event);
1911 std::function<void(bool isImsNetDomain, int32_t voiceServiceState)> callback = nullptr;
1912 EXPECT_EQ(manager.NetworkRegister(callback), std::nullopt);
1913 manager.NetworkUnregister(0);
1914 }
1915
1916 /**
1917 * @tc.number Telephony_SmsMmsGtest_GsmSmsReceiveHandler_0001
1918 * @tc.name Test GsmSmsReceiveHandler
1919 * @tc.desc Function test
1920 */
1921 HWTEST_F(BranchSmsPartTest, GsmSmsReceiveHandler_0001, Function | MediumTest | Level1)
1922 {
1923 std::vector<uint8_t> pdu = { 8, 145, 104, 49, 8, 32, 1, 5, 240, 68, 13, 145, 104, 145, 39, 32, 49, 100, 240,
1924 0, 0, 82, 64, 80, 34, 145, 17, 35, 160, 5, 0, 3, 1, 2, 1, 98, 177, 88, 44, 22, 139, 197, 98, 177, 88, 44,
1925 22, 139, 197, 98, 177, 152, 44, 54, 171, 209, 108, 55, 25, 142, 54, 163, 213, 108, 180, 90, 12, 55, 187,
1926 213, 104, 177, 88, 44, 22, 139, 197, 98, 177, 88, 44, 22, 139, 197, 98, 177, 88, 76, 22, 155, 213, 104,
1927 182, 155, 12, 71, 155, 209, 106, 54, 90, 45, 134, 155, 221, 106, 180, 88, 44, 22, 139, 197, 98, 177, 88,
1928 44, 22, 139, 197, 98, 177, 88, 44, 38, 139, 205, 106, 52, 219, 77, 134, 163, 205, 104, 53, 27, 173, 22,
1929 195, 205, 110, 53, 90, 44, 22, 139, 197, 98, 177, 88, 44, 22, 139, 197, 98, 177, 88, 44, 22, 147, 197, 102,
1930 53, 154, 237, 38, 195, 209, 102 };
1931 std::shared_ptr<SmsBaseMessage> baseMessage = GsmSmsMessage::CreateMessage(StringUtils::StringToHex(pdu));
1932 EXPECT_NE(baseMessage, nullptr);
1933 std::shared_ptr<GsmSmsReceiveHandler> smsReceiveHandler = std::make_shared<GsmSmsReceiveHandler>(0);
1934 smsReceiveHandler->HandleReceivedSmsWithoutDataShare(baseMessage);
1935 smsReceiveHandler->HandleRemainDataShare(baseMessage);
1936 smsReceiveHandler->HandleSmsByType(baseMessage);
1937 smsReceiveHandler->HandleRemainDataShare(nullptr);
1938 EXPECT_NE(smsReceiveHandler->HandleAck(baseMessage), AckIncomeCause::SMS_ACK_UNKNOWN_ERROR);
1939 EXPECT_EQ(smsReceiveHandler->HandleAck(nullptr), AckIncomeCause::SMS_ACK_UNKNOWN_ERROR);
1940 std::shared_ptr<CdmaSmsMessage> message = std::make_shared<CdmaSmsMessage>();
1941 EXPECT_NE(message, nullptr);
1942 message->transMsg_ = std::make_unique<struct CdmaTransportMsg>();
1943 EXPECT_NE(message->transMsg_, nullptr);
1944 (void)memset_s(message->transMsg_.get(), sizeof(struct CdmaTransportMsg), 0x00, sizeof(struct CdmaTransportMsg));
1945 std::make_shared<CdmaSmsReceiveHandler>(0)->HandleRemainDataShare(message);
1946 EXPECT_NE(std::make_shared<CdmaSmsReceiveHandler>(0)->HandleAck(message), AckIncomeCause::SMS_ACK_UNKNOWN_ERROR);
1947 pdu = { 1, 1, 2, 0, 4, 8, 19, 0, 3, 16, 8, 208, 1, 6, 16, 44, 40, 112, 225, 66, 8, 1, 192, 12, 1, 192 };
1948 message = CdmaSmsMessage::CreateMessage(StringUtils::StringToHex(pdu));
1949 EXPECT_NE(message, nullptr);
1950 auto dataShareHelperMock = std::make_shared<DataShareHelperMock>();
1951 DelayedSingleton<SmsPersistHelper>::GetInstance()->smsDataShareHelper_ = dataShareHelperMock;
1952 EXPECT_CALL(*dataShareHelperMock, Insert(_, _))
1953 .WillRepeatedly(Return(0));
1954 EXPECT_CALL(*dataShareHelperMock, Delete(_, _))
1955 .WillOnce(Return(-1))
1956 .WillRepeatedly(Return(0));
1957 std::make_shared<CdmaSmsReceiveHandler>(0)->HandleRemainDataShare(message);
1958 std::make_shared<CdmaSmsReceiveHandler>(0)->HandleRemainDataShare(message);
1959 EXPECT_NE(std::make_shared<CdmaSmsReceiveHandler>(0)->HandleAck(message), AckIncomeCause::SMS_ACK_UNKNOWN_ERROR);
1960 DelayedSingleton<SmsPersistHelper>::GetInstance()->smsDataShareHelper_ = nullptr;
1961 }
1962
1963 /**
1964 * @tc.number Telephony_SmsMmsGtest_GsmSmsTpduCodec_0014
1965 * @tc.name Test GsmSmsTpduCodec
1966 * @tc.desc Function test
1967 */
1968 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0014, Function | MediumTest | Level1)
1969 {
1970 auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1971 SmsStatusReport pStatusRep;
1972 SmsSubmit pSmsSub;
1973
1974 auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1975 auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1976 encodeBuffer->data_[0] = 1;
1977 EXPECT_FALSE(encode->EncodeStatusReportPdu(*encodeBuffer, nullptr));
1978 EXPECT_FALSE(encode->EncodeStatusReportPdu(*encodeBuffer, &pStatusRep));
1979 pStatusRep.bMoreMsg = true;
1980 pStatusRep.bStatusReport = true;
1981 pStatusRep.bHeaderInd = true;
1982 pStatusRep.paramInd = 1;
1983 EXPECT_FALSE(encode->EncodeStatusReportPdu(*encodeBuffer, &pStatusRep));
1984 pStatusRep.paramInd = 2;
1985 EXPECT_FALSE(encode->EncodeStatusReportPdu(*encodeBuffer, &pStatusRep));
1986 pStatusRep.paramInd = 4;
1987 EXPECT_FALSE(encode->EncodeStatusReportPdu(*encodeBuffer, &pStatusRep));
1988 encode->paramCodec_ = nullptr;
1989 EXPECT_FALSE(encode->EncodeDeliverReportPartData(*encodeBuffer, nullptr));
1990 EXPECT_FALSE(encode->EncodeStatusReportPartData(*encodeBuffer, &pStatusRep));
1991 encode->uDataCodec_ = nullptr;
1992 EXPECT_FALSE(encode->EncodeDeliverReportPartData(*encodeBuffer, nullptr));
1993 EXPECT_FALSE(encode->EncodeStatusReportData(*encodeBuffer, &pStatusRep, 0));
1994
1995 auto decode = std::make_shared<GsmSmsTpduDecode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1996 auto decodeBuffer = std::make_shared<SmsReadBuffer>("00");
1997 decodeBuffer->data_[0] = 1;
1998 EXPECT_FALSE(decode->DecodeSubmit(*decodeBuffer, &pSmsSub));
1999 EXPECT_FALSE(decode->DecodeSubmit(*decodeBuffer, nullptr));
2000 SmsDeliver pDeliver;
2001 EXPECT_FALSE(decode->DecodeDeliver(*decodeBuffer, &pDeliver));
2002 EXPECT_FALSE(decode->DecodeDeliver(*decodeBuffer, nullptr));
2003 EXPECT_FALSE(decode->DecodeStatusReport(*decodeBuffer, &pStatusRep));
2004 EXPECT_FALSE(decode->DecodeStatusReport(*decodeBuffer, nullptr));
2005 encode->EncodeStatusReportData(*encodeBuffer, &pStatusRep, 0);
2006 decode->DecodeStatusReportData(*decodeBuffer, &pStatusRep);
2007 decode->tpdu_ = nullptr;
2008 EXPECT_FALSE(decode->DecodeStatusReportData(*decodeBuffer, &pStatusRep));
2009 EXPECT_FALSE(decode->DecodeDeliver(*decodeBuffer, &pDeliver));
2010 EXPECT_FALSE(decode->DecodeSubmit(*decodeBuffer, &pSmsSub));
2011 decode->paramCodec_ = nullptr;
2012 EXPECT_FALSE(decode->DecodeSubmitPartData(*decodeBuffer, &pSmsSub));
2013 EXPECT_FALSE(decode->DecodeDeliver(*decodeBuffer, &pDeliver));
2014 EXPECT_FALSE(decode->DecodeStatusReport(*decodeBuffer, &pStatusRep));
2015 decode->uDataCodec_ = nullptr;
2016 EXPECT_FALSE(decode->DecodeSubmitPartData(*decodeBuffer, &pSmsSub));
2017 EXPECT_FALSE(decode->DecodeDeliverPartData(*decodeBuffer, nullptr));
2018 EXPECT_FALSE(decode->DecodeStatusReportData(*decodeBuffer, &pStatusRep));
2019 }
2020
2021 /**
2022 * @tc.number Telephony_SmsMmsGtest_GsmUserDataPdu_0001
2023 * @tc.name Test GsmUserDataPdu
2024 * @tc.desc Function test
2025 */
2026 HWTEST_F(BranchSmsPartTest, GsmUserDataPdu_0001, Function | MediumTest | Level1)
2027 {
2028 SmsWriteBuffer wBuf;
2029 wBuf.data_ = nullptr;
2030 SmsReadBuffer rBuf("");
2031 rBuf.data_ = nullptr;
2032 GsmUserDataPdu gsmUserDataPdu;
2033 uint8_t udhl = 0;
2034 EXPECT_FALSE(gsmUserDataPdu.GetHeaderCnt(rBuf, nullptr, udhl, MAX_UD_HEADER_NUM));
2035 SmsUDH header;
2036 header.udhType = UDH_SINGLE_SHIFT;
2037 gsmUserDataPdu.EncodeHeader(wBuf, header);
2038 EXPECT_FALSE(gsmUserDataPdu.DecodeHeaderPartData(rBuf, header, 0));
2039 header.udhType = UDH_LOCKING_SHIFT;
2040 gsmUserDataPdu.EncodeHeader(wBuf, header);
2041 EXPECT_FALSE(gsmUserDataPdu.DecodeHeaderPartData(rBuf, header, 0));
2042 header.udhType = UDH_NONE;
2043 gsmUserDataPdu.EncodeHeaderAppPort8bit(wBuf, header);
2044 EXPECT_FALSE(gsmUserDataPdu.DecodeHeaderPartData(rBuf, header, 0));
2045 header.udhType = UDH_CONCAT_8BIT;
2046 gsmUserDataPdu.EncodeHeaderAppPort16bit(wBuf, header);
2047 uint16_t len = 0;
2048 EXPECT_FALSE(gsmUserDataPdu.DecodeHeader(rBuf, header, len));
2049 header.udhType = UDH_APP_PORT_8BIT;
2050 gsmUserDataPdu.EncodeHeaderReplyAddress(wBuf, header);
2051 EXPECT_FALSE(gsmUserDataPdu.DecodeHeader(rBuf, header, len));
2052 gsmUserDataPdu.EncodeHeaderConcat8Bit(wBuf, header);
2053 gsmUserDataPdu.EncodeHeaderConcat16Bit(wBuf, header);
2054 EXPECT_FALSE(gsmUserDataPdu.DecodeHeaderConcat8Bit(rBuf, header));
2055 EXPECT_FALSE(gsmUserDataPdu.DecodeHeaderConcat16Bit(rBuf, header));
2056 EXPECT_FALSE(gsmUserDataPdu.DecodeHeaderAppPort16Bit(rBuf, header));
2057 EXPECT_FALSE(gsmUserDataPdu.DecodeHeaderSpecialSms(rBuf, header));
2058 EXPECT_FALSE(gsmUserDataPdu.DecodeHeaderSingleShift(rBuf, header));
2059 EXPECT_FALSE(gsmUserDataPdu.DecodeHeaderLockingShift(rBuf, header));
2060 EXPECT_FALSE(gsmUserDataPdu.DecodeHeaderDefaultCase(rBuf, header));
2061 }
2062
2063 /**
2064 * @tc.number Telephony_SmsMmsGtest_SmsBroadcastSubscriberReceiver_0001
2065 * @tc.name Test SmsBroadcastSubscriberReceiver
2066 * @tc.desc Function test
2067 */
2068 HWTEST_F(BranchSmsPartTest, SmsBroadcastSubscriberReceiver_0001, Function | MediumTest | Level1)
2069 {
2070 using namespace EventFwk;
2071 auto dataShareHelperMock = std::make_shared<DataShareHelperMock>();
2072 DelayedSingleton<SmsPersistHelper>::GetInstance()->smsDataShareHelper_ = dataShareHelperMock;
2073 EXPECT_CALL(*dataShareHelperMock, Delete(_, _))
2074 .WillRepeatedly(Return(0));
2075 MatchingSkills smsSkills;
2076 smsSkills.AddEvent(CommonEventSupport::COMMON_EVENT_SMS_RECEIVE_COMPLETED);
2077 CommonEventSubscribeInfo smsSubscriberInfo(smsSkills);
2078 smsSubscriberInfo.SetThreadMode(EventFwk::CommonEventSubscribeInfo::COMMON);
2079 auto receiver = std::make_shared<SmsBroadcastSubscriberReceiver>(smsSubscriberInfo);
2080 Want want;
2081 CommonEventData data;
2082 std::string addr = "";
2083 want.SetAction(CommonEventSupport::COMMON_EVENT_SMS_RECEIVE_COMPLETED);
2084 want.SetParam(SmsBroadcastSubscriberReceiver::SMS_BROADCAST_ADDRESS_KEY, addr);
2085 want.SetParam(SmsBroadcastSubscriberReceiver::SMS_BROADCAST_DATABASE_ID_KEY, 1);
2086 data.SetWant(want);
2087 receiver->OnReceiveEvent(data);
2088
2089 addr = "addr";
2090 want.SetParam(SmsBroadcastSubscriberReceiver::SMS_BROADCAST_ADDRESS_KEY, addr);
2091 data.SetWant(want);
2092 receiver->OnReceiveEvent(data);
2093
2094 want.SetAction(CommonEventSupport::COMMON_EVENT_SMS_WAPPUSH_RECEIVE_COMPLETED);
2095 data.SetWant(want);
2096 receiver->OnReceiveEvent(data);
2097
2098 want.SetAction("invalid action");
2099 data.SetWant(want);
2100 receiver->OnReceiveEvent(data);
2101 DelayedSingleton<SmsPersistHelper>::GetInstance()->smsDataShareHelper_ = nullptr;
2102
2103 SmsWapPushHandler wapPushHandler(0);
2104 EXPECT_FALSE(wapPushHandler.SendWapPushMessageBroadcast(nullptr));
2105 }
2106 } // namespace Telephony
2107 } // namespace OHOS
2108