• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "random"
20 #include "delivery_short_message_callback_stub.h"
21 #include "gtest/gtest.h"
22 #include "gsm_sms_param_decode.h"
23 #include "gsm_sms_tpdu_encode.h"
24 #include "send_short_message_callback_stub.h"
25 #include "sms_misc_manager.h"
26 #include "sms_mms_gtest.h"
27 #include "sms_service.h"
28 #include "sms_persist_helper.h"
29 #include "system_ability_definition.h"
30 
31 namespace OHOS {
32 namespace Telephony {
33 using namespace testing::ext;
34 
35 namespace {
36 const std::string TEST_SOURCE_DATA = "srcData";
37 const std::string SMS_ADDR_ONE = "";
38 const std::string SMS_ADDR_TWO = " ";
39 const std::string SMS_ADDR_THREE = " 123 ";
40 const std::string SMS_ADDR_FOUR = "1 23";
41 const std::string SMS_ADDR_FIVE = " a 123 ";
42 const std::string SEND_MMS_FILE_URL = "1,2,";
43 const std::string VNET_MMSC = "http://mmsc.vnet.mobi";
44 static constexpr uint8_t MAX_GSM_7BIT_DATA_LEN = 160;
45 static constexpr uint8_t MAX_SMSC_LEN = 20;
46 } // namespace
47 
48 class BranchSmsPartTest : public testing::Test {
49 public:
50     static void SetUpTestCase();
51     static void TearDownTestCase();
52     void SetUp();
53     void TearDown();
54 };
SetUpTestCase()55 void BranchSmsPartTest::SetUpTestCase() {}
56 
TearDownTestCase()57 void BranchSmsPartTest::TearDownTestCase() {}
58 
SetUp()59 void BranchSmsPartTest::SetUp() {}
60 
TearDown()61 void BranchSmsPartTest::TearDown() {}
62 
63 /**
64  * @tc.number   Telephony_SmsMmsGtest_SmsInterfaceStub_0001
65  * @tc.name     Test SmsInterfaceStub
66  * @tc.desc     Function test
67  */
68 HWTEST_F(BranchSmsPartTest, SmsInterfaceStub_0001, Function | MediumTest | Level1)
69 {
70     AccessMmsToken token;
71     int32_t slotId = 0;
72     MessageParcel dataParcel;
73     dataParcel.WriteInt32(slotId);
74     dataParcel.WriteBuffer(TEST_SOURCE_DATA.c_str(), TEST_SOURCE_DATA.size());
75     dataParcel.RewindRead(0);
76     MessageParcel replyParcel;
77     uint32_t code = 0;
78     MessageOption option(MessageOption::TF_SYNC);
79     DelayedSingleton<SmsService>::GetInstance()->OnRemoteRequest(code, dataParcel, replyParcel, option);
80     DelayedSingleton<SmsService>::GetInstance()->OnSendSmsTextRequest(dataParcel, replyParcel, option);
81     DelayedSingleton<SmsService>::GetInstance()->OnSendSmsTextWithoutSaveRequest(dataParcel, replyParcel, option);
82     DelayedSingleton<SmsService>::GetInstance()->OnSendSmsDataRequest(dataParcel, replyParcel, option);
83     DelayedSingleton<SmsService>::GetInstance()->OnGetSmscAddr(dataParcel, replyParcel, option);
84     DelayedSingleton<SmsService>::GetInstance()->OnAddSimMessage(dataParcel, replyParcel, option);
85     DelayedSingleton<SmsService>::GetInstance()->OnUpdateSimMessage(dataParcel, replyParcel, option);
86     DelayedSingleton<SmsService>::GetInstance()->OnGetAllSimMessages(dataParcel, replyParcel, option);
87     DelayedSingleton<SmsService>::GetInstance()->OnSplitMessage(dataParcel, replyParcel, option);
88     DelayedSingleton<SmsService>::GetInstance()->OnCreateMessage(dataParcel, replyParcel, option);
89     DelayedSingleton<SmsService>::GetInstance()->OnGetBase64Encode(dataParcel, replyParcel, option);
90     DelayedSingleton<SmsService>::GetInstance()->OnGetBase64Decode(dataParcel, replyParcel, option);
91     DelayedSingleton<SmsService>::GetInstance()->OnGetEncodeStringFunc(dataParcel, replyParcel, option);
92     DelayedSingleton<SmsService>::GetInstance()->OnGetSmsSegmentsInfo(dataParcel, replyParcel, option);
93 
94     MessageParcel sendTextParcel;
95     sendTextParcel.WriteInt32(0);
96     sendTextParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
97     sendTextParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
98     sendTextParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
99     sendTextParcel.WriteString(TEST_SOURCE_DATA);
100     DelayedSingleton<SmsService>::GetInstance()->OnSendSmsTextRequest(sendTextParcel, replyParcel, option);
101     sendTextParcel.WriteInt32(-1);
102     DelayedSingleton<SmsService>::GetInstance()->OnSendSmsTextRequest(sendTextParcel, replyParcel, option);
103     int32_t result = replyParcel.ReadInt32();
104     EXPECT_GE(result, 0);
105 
106     MessageParcel sendDataParcel;
107     dataParcel.WriteInt32(0);
108     dataParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
109     dataParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
110     dataParcel.WriteInt16(0);
111     dataParcel.WriteInt16(TEST_SOURCE_DATA.size());
112     dataParcel.WriteRawData(TEST_SOURCE_DATA.c_str(), TEST_SOURCE_DATA.size());
113     DelayedSingleton<SmsService>::GetInstance()->OnSendSmsDataRequest(dataParcel, replyParcel, option);
114     sendTextParcel.WriteInt32(-1);
115     DelayedSingleton<SmsService>::GetInstance()->OnSendSmsDataRequest(dataParcel, replyParcel, option);
116     result = replyParcel.ReadInt32();
117     EXPECT_GE(result, -1);
118 }
119 
120 /**
121  * @tc.number   Telephony_SmsMmsGtest_SmsInterfaceStub_0002
122  * @tc.name     Test SmsInterfaceStub
123  * @tc.desc     Function test
124  */
125 HWTEST_F(BranchSmsPartTest, SmsInterfaceStub_0002, Function | MediumTest | Level1)
126 {
127     std::u16string desAddr = Str8ToStr16(SMS_ADDR_ONE);
128     DelayedSingleton<SmsService>::GetInstance()->RemoveSpacesInDesAddr(desAddr);
129     EXPECT_GE(desAddr.size(), 0);
130     desAddr = Str8ToStr16(SMS_ADDR_TWO);
131     DelayedSingleton<SmsService>::GetInstance()->RemoveSpacesInDesAddr(desAddr);
132     EXPECT_GE(desAddr.size(), 0);
133     desAddr = Str8ToStr16(SMS_ADDR_THREE);
134     DelayedSingleton<SmsService>::GetInstance()->RemoveSpacesInDesAddr(desAddr);
135     EXPECT_GE(desAddr.size(), 0);
136     desAddr = Str8ToStr16(SMS_ADDR_FOUR);
137     DelayedSingleton<SmsService>::GetInstance()->RemoveSpacesInDesAddr(desAddr);
138     EXPECT_GE(desAddr.size(), 0);
139     desAddr = Str8ToStr16(SMS_ADDR_FIVE);
140     DelayedSingleton<SmsService>::GetInstance()->RemoveSpacesInDesAddr(desAddr);
141     EXPECT_GE(desAddr.size(), 0);
142 
143     MessageParcel setSmscParcel;
144     MessageParcel replyParcel;
145     MessageOption option(MessageOption::TF_SYNC);
146     setSmscParcel.WriteInt32(0);
147     setSmscParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
148     DelayedSingleton<SmsService>::GetInstance()->OnSetSmscAddr(setSmscParcel, replyParcel, option);
149     MessageParcel getSmscParcel;
150     getSmscParcel.WriteInt32(0);
151     DelayedSingleton<SmsService>::GetInstance()->OnGetSmscAddr(getSmscParcel, replyParcel, option);
152     DelayedSingleton<SmsService>::GetInstance()->OnGetAllSimMessages(getSmscParcel, replyParcel, option);
153     DelayedSingleton<SmsService>::GetInstance()->OnSetDefaultSmsSlotId(getSmscParcel, replyParcel, option);
154     DelayedSingleton<SmsService>::GetInstance()->OnGetDefaultSmsSlotId(getSmscParcel, replyParcel, option);
155     int32_t result = replyParcel.ReadInt32();
156     EXPECT_GE(result, 0);
157 
158     MessageParcel addSimMsgParcel;
159     addSimMsgParcel.WriteInt32(0);
160     addSimMsgParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
161     addSimMsgParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
162     addSimMsgParcel.WriteUint32(0);
163     DelayedSingleton<SmsService>::GetInstance()->OnAddSimMessage(addSimMsgParcel, replyParcel, option);
164     result = replyParcel.ReadInt32();
165     EXPECT_GE(result, 0);
166 
167     MessageParcel delSimMsgParcel;
168     delSimMsgParcel.WriteInt32(0);
169     delSimMsgParcel.WriteUint32(0);
170     DelayedSingleton<SmsService>::GetInstance()->OnDelSimMessage(delSimMsgParcel, replyParcel, option);
171     result = replyParcel.ReadInt32();
172     EXPECT_GE(result, 0);
173 }
174 
175 /**
176  * @tc.number   Telephony_SmsMmsGtest_SmsInterfaceStub_0003
177  * @tc.name     Test SmsInterfaceStub
178  * @tc.desc     Function test
179  */
180 HWTEST_F(BranchSmsPartTest, SmsInterfaceStub_0003, Function | MediumTest | Level1)
181 {
182     MessageParcel simMsgParcel;
183     MessageParcel replyParcel;
184     MessageOption option(MessageOption::TF_SYNC);
185     simMsgParcel.WriteInt32(0);
186     simMsgParcel.WriteUint32(0);
187     simMsgParcel.WriteUint32(0);
188     simMsgParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
189     simMsgParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
190     DelayedSingleton<SmsService>::GetInstance()->OnUpdateSimMessage(simMsgParcel, replyParcel, option);
191     int32_t result = replyParcel.ReadInt32();
192     EXPECT_GE(result, 0);
193 
194     MessageParcel SetImsSmsParcel;
195     SetImsSmsParcel.WriteInt32(0);
196     SetImsSmsParcel.WriteInt32(false);
197     DelayedSingleton<SmsService>::GetInstance()->OnSetImsSmsConfig(SetImsSmsParcel, replyParcel, option);
198     result = replyParcel.ReadInt32();
199     EXPECT_GE(result, 0);
200 
201     MessageParcel splitMsgParcel;
202     splitMsgParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
203     DelayedSingleton<SmsService>::GetInstance()->OnSplitMessage(splitMsgParcel, replyParcel, option);
204     DelayedSingleton<SmsService>::GetInstance()->OnGetBase64Encode(splitMsgParcel, replyParcel, option);
205     DelayedSingleton<SmsService>::GetInstance()->OnGetBase64Decode(splitMsgParcel, replyParcel, option);
206     result = replyParcel.ReadInt32();
207     EXPECT_GE(result, 0);
208 
209     MessageParcel createMsgParcel;
210     createMsgParcel.WriteString(TEST_SOURCE_DATA);
211     createMsgParcel.WriteString(TEST_SOURCE_DATA);
212     DelayedSingleton<SmsService>::GetInstance()->OnCreateMessage(createMsgParcel, replyParcel, option);
213     result = replyParcel.ReadInt32();
214     EXPECT_GE(result, 0);
215 
216     MessageParcel segmentParcel;
217     segmentParcel.WriteInt32(0);
218     segmentParcel.WriteString16(Str8ToStr16(TEST_SOURCE_DATA));
219     segmentParcel.WriteBool(false);
220     DelayedSingleton<SmsService>::GetInstance()->OnGetSmsSegmentsInfo(segmentParcel, replyParcel, option);
221     result = replyParcel.ReadInt32();
222     EXPECT_GE(result, 0);
223 
224     MessageParcel formatParcel;
225     DelayedSingleton<SmsService>::GetInstance()->OnGetImsShortMessageFormat(formatParcel, replyParcel, option);
226     result = replyParcel.ReadInt32();
227     DelayedSingleton<SmsService>::GetInstance()->OnGetDefaultSmsSimId(formatParcel, replyParcel, option);
228     result = replyParcel.ReadInt32();
229     EXPECT_GE(result, 0);
230 }
231 
232 /**
233  * @tc.number   Telephony_SmsMmsGtest_SmsInterfaceManager_0001
234  * @tc.name     Test SmsInterfaceManager
235  * @tc.desc     Function test
236  */
237 HWTEST_F(BranchSmsPartTest, SmsInterfaceManager_0001, Function | MediumTest | Level1)
238 {
239     auto interfaceManager = std::make_shared<SmsInterfaceManager>(0);
240     ASSERT_NE(interfaceManager, nullptr);
241     interfaceManager->HasSmsCapability();
242     std::string dataStr = TEST_SOURCE_DATA;
243     auto callStub = iface_cast<ISendShortMessageCallback>(new SendShortMessageCallbackStub());
244     auto deliveryStub = iface_cast<IDeliveryShortMessageCallback>(new DeliveryShortMessageCallbackStub());
245     std::string emptyStr = "";
246     uint16_t dataBaseId = 0;
247     interfaceManager->TextBasedSmsDelivery(dataStr, dataStr, dataStr, callStub, deliveryStub, dataBaseId);
248     interfaceManager->TextBasedSmsDelivery(dataStr, emptyStr, dataStr, callStub, deliveryStub, dataBaseId);
249     interfaceManager->TextBasedSmsDelivery(dataStr, dataStr, emptyStr, callStub, deliveryStub, dataBaseId);
250     int32_t result = interfaceManager->TextBasedSmsDelivery(dataStr, emptyStr, emptyStr,
251         callStub, deliveryStub, dataBaseId);
252     EXPECT_GE(result, 0);
253 
254     const uint8_t *data = reinterpret_cast<const uint8_t *>(dataStr.c_str());
255     interfaceManager->DataBasedSmsDelivery(dataStr, dataStr, 0, data, dataStr.size(), callStub, deliveryStub);
256     interfaceManager->DataBasedSmsDelivery(dataStr, emptyStr, 0, data, dataStr.size(), callStub, deliveryStub);
257     interfaceManager->DataBasedSmsDelivery(dataStr, dataStr, 0, nullptr, 0, callStub, deliveryStub);
258     interfaceManager->smsSendManager_ = nullptr;
259     interfaceManager->TextBasedSmsDelivery(dataStr, dataStr, dataStr, callStub, deliveryStub, dataBaseId);
260     result = interfaceManager->DataBasedSmsDelivery(dataStr, dataStr, 0, data, dataStr.size(), callStub, deliveryStub);
261     EXPECT_GE(result, 0);
262 
263     interfaceManager->AddSimMessage(dataStr, dataStr, ISmsServiceInterface::SIM_MESSAGE_STATUS_UNREAD);
264     interfaceManager->UpdateSimMessage(0, ISmsServiceInterface::SIM_MESSAGE_STATUS_UNREAD, dataStr, dataStr);
265     std::vector<ShortMessage> message;
266     interfaceManager->GetAllSimMessages(message);
267     result = interfaceManager->SetSmscAddr(dataStr);
268     EXPECT_GE(result, 0);
269 
270     std::u16string smsc;
271     interfaceManager->GetSmscAddr(smsc);
272     interfaceManager->SetCBConfig(false, 0, 1, 0);
273     result = interfaceManager->SetImsSmsConfig(0, false);
274     EXPECT_GE(result, 0);
275 
276     interfaceManager->SetDefaultSmsSlotId(0);
277     interfaceManager->GetDefaultSmsSlotId();
278     int32_t simId;
279     interfaceManager->GetDefaultSmsSimId(simId);
280     std::vector<std::u16string> splitMessage;
281     result = interfaceManager->SplitMessage(dataStr, splitMessage);
282     EXPECT_GE(result, 0);
283 }
284 
285 /**
286  * @tc.number   Telephony_SmsMmsGtest_SmsInterfaceManager_0002
287  * @tc.name     Test SmsInterfaceManager
288  * @tc.desc     Function test
289  */
290 HWTEST_F(BranchSmsPartTest, SmsInterfaceManager_0002, Function | MediumTest | Level1)
291 {
292     auto interfaceManager = std::make_shared<SmsInterfaceManager>(0);
293     ASSERT_NE(interfaceManager, nullptr);
294     LengthInfo outInfo;
295     std::string dataStr = TEST_SOURCE_DATA;
296     interfaceManager->GetSmsSegmentsInfo(dataStr, false, outInfo);
297     bool isSupported = false;
298     interfaceManager->IsImsSmsSupported(0, isSupported);
299     std::u16string format;
300     interfaceManager->GetImsShortMessageFormat(format);
301     int32_t result = interfaceManager->HasSmsCapability();
302     EXPECT_GE(result, 0);
303 
304     std::u16string mmsc = u"";
305     std::u16string data = u"";
306     std::u16string ua = u"";
307     std::u16string uaprof = u"";
308     interfaceManager->SendMms(mmsc, data, ua, uaprof);
309     result = interfaceManager->DownloadMms(mmsc, data, ua, uaprof);
310     EXPECT_GE(result, 0);
311 
312     interfaceManager->smsMiscManager_ = nullptr;
313     interfaceManager->AddSimMessage(dataStr, dataStr, ISmsServiceInterface::SIM_MESSAGE_STATUS_UNREAD);
314     interfaceManager->UpdateSimMessage(0, ISmsServiceInterface::SIM_MESSAGE_STATUS_UNREAD, dataStr, dataStr);
315     std::vector<ShortMessage> message;
316     interfaceManager->GetAllSimMessages(message);
317     interfaceManager->SetSmscAddr(dataStr);
318     std::u16string smsc;
319     result = interfaceManager->GetSmscAddr(mmsc);
320     EXPECT_GE(result, 0);
321 
322     interfaceManager->SetCBConfig(false, 0, 1, 0);
323     interfaceManager->SetImsSmsConfig(0, false);
324     interfaceManager->SetDefaultSmsSlotId(0);
325     interfaceManager->GetDefaultSmsSlotId();
326     int32_t simId;
327     result = interfaceManager->GetDefaultSmsSimId(simId);
328     EXPECT_GE(result, 0);
329 
330     std::vector<std::u16string> splitMessage;
331     interfaceManager->SplitMessage(dataStr, splitMessage);
332     interfaceManager->GetSmsSegmentsInfo(dataStr, false, outInfo);
333     result = interfaceManager->IsImsSmsSupported(0, isSupported);
334     EXPECT_GE(result, 0);
335 
336     interfaceManager->GetImsShortMessageFormat(format);
337     interfaceManager->mmsSendManager_ = nullptr;
338     interfaceManager->SendMms(mmsc, data, ua, uaprof);
339     interfaceManager->mmsReceiverManager_ = nullptr;
340     result = interfaceManager->DownloadMms(mmsc, data, ua, uaprof);
341     EXPECT_GE(result, 0);
342 }
343 
344 /**
345  * @tc.number   Telephony_SmsMmsGtest_SmsInterfaceManager_0003
346  * @tc.name     Test SmsInterfaceManager
347  * @tc.desc     Function test
348  */
349 HWTEST_F(BranchSmsPartTest, SmsInterfaceManager_0003, Function | MediumTest | Level1)
350 {
351     int32_t slotId = 0;
352     std::shared_ptr<SmsInterfaceManager> interfaceManager = std::make_shared<SmsInterfaceManager>(slotId);
353     interfaceManager->mmsSendManager_ = nullptr;
354     std::u16string mmsc(StringUtils::ToUtf16(VNET_MMSC));
355     std::u16string data(StringUtils::ToUtf16(SEND_MMS_FILE_URL));
356     std::u16string ua = u"112233";
357     std::u16string uaprof = u"112233";
358     int32_t sendMmsRet = interfaceManager->SendMms(mmsc, data, ua, uaprof);
359     interfaceManager->mmsReceiverManager_ = nullptr;
360     int32_t downloadMmsRet = interfaceManager->DownloadMms(mmsc, data, ua, uaprof);
361     EXPECT_GE(sendMmsRet, 0);
362     EXPECT_GE(downloadMmsRet, 0);
363 
364     if (interfaceManager->smsSendManager_ == nullptr) {
365         interfaceManager->smsSendManager_ = std::make_unique<SmsSendManager>(0);
366     }
367     interfaceManager->smsSendManager_->Init();
368     interfaceManager->smsSendManager_->networkManager_->netWorkType_ = NetWorkType::NET_TYPE_GSM;
369     std::string specialText =
370         "ฏ็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็";
371     std::vector<std::u16string> splitMessage;
372     interfaceManager->SplitMessage(specialText, splitMessage);
373     size_t segCount = 2;
374     size_t maxSegLen = 67;
375     ASSERT_EQ(splitMessage.size(), segCount);
376     EXPECT_EQ(splitMessage[0].size(), maxSegLen);
377 
378     std::string normalText =
379         "这是一个普通的长短信,由数字0123456789、小写字母abcdefghijklmnopqrstuvwxyz、大写字母ABCDEFGHIJKLMNOPQRSTUVWXYZ和汉字组成";
380     splitMessage.clear();
381     interfaceManager->SplitMessage(normalText, splitMessage);
382     ASSERT_EQ(splitMessage.size(), segCount);
383     EXPECT_EQ(splitMessage[0].size(), maxSegLen);
384 
385     std::string randomText;
386     size_t randomLength = 500;
387     randomText.reserve(randomLength);
388     std::random_device rd;
389     std::mt19937 gen(rd());
390     std::uniform_int_distribution<> dis(1, 0xFF);
391     for (size_t i = 0; i < randomLength; i++) {
392         randomText += static_cast<char>(dis(gen));
393     }
394     splitMessage.clear();
395     interfaceManager->SplitMessage(randomText, splitMessage);
396     EXPECT_GE(splitMessage.size(), 1);
397 }
398 
399 /**
400  * @tc.number   Telephony_SmsMmsGtest_SmsEmailMessage_0001
401  * @tc.name     Test SmsEmailMessage
402  * @tc.desc     Function test
403  */
404 HWTEST_F(BranchSmsPartTest, SmsEmailMessage_0001, Function | MediumTest | Level1)
405 {
406     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
407     string pdu = ("07963258974152f204038105f300008022110232438a28e6a71b40c587eb7"
408                   "076d9357eb7412f7d793a07ddeb6278794d07bde8d5391b246e93d3");
409     EXPECT_TRUE(gsmSmsMessage->CreateMessage(pdu) != nullptr);
410     auto message = gsmSmsMessage->CreateMessage(pdu);
411     EXPECT_EQ(message->GetEmailMessageBody(), "zeSs wubpekt /tUsl bmdi");
412     EXPECT_EQ(message->GetVisibleMessageBody(), "zeSs wubpekt /tUsl bmdi");
413     EXPECT_EQ(message->GetEmailAddress(), "fOn@Txauple.com");
414     EXPECT_EQ(message->GetVisibleOriginatingAddress(), "fOn@Txauple.com");
415     EXPECT_TRUE(message->IsEmail());
416 
417     pdu = ("07913244457812f204038105f400007120103215358a29d6e71b503667db7076d935"
418            "7eb741af0d0a442fcfe8c13639bfe16d289bdee6b5f1813629");
419     EXPECT_TRUE(gsmSmsMessage->CreateMessage(pdu) != nullptr);
420     message = gsmSmsMessage->CreateMessage(pdu);
421     EXPECT_EQ(message->GetEmailMessageBody(), "{ te3tAmdy[^~\\] }");
422     EXPECT_EQ(message->GetVisibleMessageBody(), "{ te3tAmdy[^~\\] }");
423     EXPECT_EQ(message->GetEmailAddress(), "VOo@efYmple.com");
424     EXPECT_EQ(message->GetVisibleOriginatingAddress(), "VOo@efYmple.com");
425     EXPECT_TRUE(message->IsEmail());
426 }
427 
428 /**
429  * @tc.number   Telephony_SmsMmsGtest_SmsEmailMessage_0002
430  * @tc.name     Test SmsEmailMessage
431  * @tc.desc     Function test
432  */
433 HWTEST_F(BranchSmsPartTest, SmsEmailMessage_0002, Function | MediumTest | Level1)
434 {
435     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
436     string pdu = ("07963258974152f204038105f300008022110232438a28e6a71b40c587eb"
437                   "7076d9357eb7412f7d793a07ddeb6278794d07bde8d5391b246e93d3");
438     EXPECT_TRUE(gsmSmsMessage->CreateMessage(pdu) != nullptr);
439     auto message = gsmSmsMessage->CreateMessage(pdu);
440     EXPECT_TRUE(message != nullptr);
441 
442     EXPECT_TRUE(message->IsEmailAddress("\"DAS\" <NAME@sadds.com>"));
443     EXPECT_TRUE(message->IsEmailAddress("DAS <NAME@sadds.com>"));
444     EXPECT_FALSE(message->IsEmailAddress(""));
445     EXPECT_FALSE(message->IsEmailAddress("\"DAS\" 45654654564"));
446     EXPECT_FALSE(message->IsEmailAddress("DAS 13254654654"));
447     EXPECT_TRUE(message->IsEmailAddress("阿松大@163.com"));
448     EXPECT_TRUE(message->IsEmailAddress("aaa@aa.bb.163.com"));
449 }
450 
451 /**
452  * @tc.number   Telephony_SmsMmsGtest_SmsEmailMessage_0003
453  * @tc.name     Test SmsEmailMessage
454  * @tc.desc     Function test
455  */
456 HWTEST_F(BranchSmsPartTest, SmsEmailMessage_0003, Function | MediumTest | Level1)
457 {
458     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
459     string pdu = ("07963258974152f2040D91687103920059F100008022110232438a28e6a71b40c587e"
460            "b7076d9357eb7412f7d793a07ddeb6278794d07bde8d5391b246e93d3");
461     EXPECT_TRUE(gsmSmsMessage->CreateMessage(pdu) != nullptr);
462     auto message = gsmSmsMessage->CreateMessage(pdu);
463     EXPECT_FALSE(message->IsEmail());
464 
465     pdu = ("07963258974152f204038105f300008022110232438a10e6a71b40c587eb7076d9357eb743");
466     EXPECT_TRUE(gsmSmsMessage->CreateMessage(pdu) != nullptr);
467     message = gsmSmsMessage->CreateMessage(pdu);
468     EXPECT_FALSE(message->IsEmail());
469 }
470 
471 /**
472  * @tc.number   Telephony_SmsMmsGtest_SmsStateObserver_0001
473  * @tc.name     Test SmsStateObserver_0001
474  * @tc.desc     Function test
475  */
476 HWTEST_F(BranchSmsPartTest, SmsStateObserver_0001, Function | MediumTest | Level1)
477 {
478     std::shared_ptr<SmsStateObserver> smsStateObserver = std::make_shared<SmsStateObserver>();
479     smsStateObserver->smsSubscriber_ = nullptr;
480     smsStateObserver->StopEventSubscriber();
481     std::shared_ptr<CommonEventSubscribeInfo> subscribeInfo = std::make_shared<CommonEventSubscribeInfo>();
482     std::shared_ptr<SmsStateEventSubscriber> smsStateEventSubscriber =
483         std::make_shared<SmsStateEventSubscriber>(*subscribeInfo);
484     EventFwk::CommonEventData eventData = EventFwk::CommonEventData();
485     AAFwk::Want want = AAFwk::Want();
486     want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_EMERGENCY_CB_RECEIVE_COMPLETED);
487     eventData.SetWant(want);
488     smsStateEventSubscriber->OnReceiveEvent(eventData);
489     want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_RECEIVE_COMPLETED);
490     eventData.SetWant(want);
491     smsStateEventSubscriber->OnReceiveEvent(eventData);
492     want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_WAPPUSH_RECEIVE_COMPLETED);
493     eventData.SetWant(want);
494     smsStateEventSubscriber->OnReceiveEvent(eventData);
495     want.SetAction(EventFwk::CommonEventSupport::COMMON_EVENT_BATTERY_LOW);
496     eventData.SetWant(want);
497     smsStateEventSubscriber->OnReceiveEvent(eventData);
498     EXPECT_TRUE(smsStateObserver != nullptr);
499     EXPECT_TRUE(subscribeInfo != nullptr);
500     EXPECT_TRUE(smsStateEventSubscriber != nullptr);
501 }
502 
503 /**
504  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamCodec_0014
505  * @tc.name     Test GsmSmsParamCodec DecodeSmscPdu
506  * @tc.desc     Function test
507  */
508 HWTEST_F(BranchSmsPartTest, GsmSmsParamCodec_0014, Function | MediumTest | Level1) {
509     /**
510     * test supporting smsAddress.ton is unknown
511     */
512     auto gsmSmsParamCodec = std::make_shared<GsmSmsParamCodec>();
513     EXPECT_NE(gsmSmsParamCodec, nullptr);
514     AddressNumber smsAddress;
515 
516     unsigned char encodeData[] = { 0x2, 0x81, 0x2A, 0xB1 };
517     unsigned char *pSMSC = encodeData;
518     EXPECT_GE(gsmSmsParamCodec->DecodeSmscPdu(pSMSC, 5, smsAddress), 0);
519     std::string address(smsAddress.address);
520     EXPECT_EQ(address, "*21#");
521 }
522 
523 /**
524  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamCodec_0015
525  * @tc.name     Test GsmSmsParamCodec DecodeDcsPdu
526  * @tc.desc     Function test
527  */
528 HWTEST_F(BranchSmsPartTest, GsmSmsParamCodec_0015, Function | MediumTest | Level1) {
529     /**
530     * test DecodeDcsPdu
531     */
532     auto gsmSmsParamCodec = std::make_shared<GsmSmsParamCodec>();
533     EXPECT_NE(gsmSmsParamCodec, nullptr);
534 
535     auto decodeBuffer = std::make_shared<SmsReadBuffer>("0011000D91685150800576F70001C404D4F29C0E");
536     SmsDcs *smsDcs = new SmsDcs();
537     smsDcs->codingGroup = OHOS::Telephony::PduSchemeGroup::CODING_GENERAL_GROUP;
538     smsDcs->bCompressed = false;
539     smsDcs->codingScheme = OHOS::Telephony::DataCodingScheme::DATA_CODING_UCS2;
540     smsDcs->msgClass = OHOS::Telephony::SmsMessageClass::SMS_INSTANT_MESSAGE;
541 
542     EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer, smsDcs), 1);
543     auto decodeBuffer1 = std::make_shared<SmsReadBuffer>("16D131D98C56B3DD7039584C36A3D56C375C0E169301");
544     EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer1, smsDcs), 1);
545     auto decodeBuffer2 = std::make_shared<SmsReadBuffer>("4011000D91685150800576F70001C404D4F29C0E");
546     EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer2, smsDcs), 1);
547     auto decodeBuffer3 = std::make_shared<SmsReadBuffer>("C011000D91685150800576F70001C404D4F29C0E");
548     EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer3, smsDcs), 1);
549     auto decodeBuffer4 = std::make_shared<SmsReadBuffer>("D011000D91685150800576F70001C404D4F29C0E");
550     EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer4, smsDcs), 1);
551     auto decodeBuffer5 = std::make_shared<SmsReadBuffer>("B011000D91685150800576F70001C404D4F29C0E");
552     EXPECT_EQ(gsmSmsParamCodec->DecodeDcsPdu(*decodeBuffer5, smsDcs), 1);
553 }
554 
555 /**
556  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamDecode_0003
557  * @tc.name     Test GsmSmsParamDecode DecodeDcsGeneralGroupPdu
558  * @tc.desc     Function test
559  */
560 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0003, Function | MediumTest | Level1)
561 {
562     auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
563     EXPECT_NE(gsmSmsParamDecode, nullptr);
564     uint8_t dcs = 0x08;
565     SmsDcs *smsDcs = nullptr;
566     gsmSmsParamDecode->DecodeDcsGeneralGroupPdu(dcs, smsDcs);
567     EXPECT_EQ(smsDcs, nullptr);
568     SmsDcs *smsDcs1 = new SmsDcs();
569     gsmSmsParamDecode->DecodeDcsGeneralGroupPdu(dcs, smsDcs1);
570     EXPECT_EQ(smsDcs1->msgClass, OHOS::Telephony::SMS_CLASS_UNKNOWN);
571     dcs = 0x15;
572     gsmSmsParamDecode->DecodeDcsGeneralGroupPdu(dcs, smsDcs1);
573     EXPECT_NE(smsDcs1->msgClass, OHOS::Telephony::SMS_CLASS_UNKNOWN);
574 }
575 
576 /**
577  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamDecode_0004
578  * @tc.name     Test GsmSmsParamDecode DecodeDcsClassGroupPdu
579  * @tc.desc     Function test
580  */
581 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0004, Function | MediumTest | Level1)
582 {
583     auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
584     EXPECT_NE(gsmSmsParamDecode, nullptr);
585     uint8_t dcs = 0x08;
586     SmsDcs *smsDcs = nullptr;
587     gsmSmsParamDecode->DecodeDcsClassGroupPdu(dcs, smsDcs);
588     EXPECT_EQ(smsDcs, nullptr);
589     SmsDcs *smsDcs1 = new SmsDcs();
590     gsmSmsParamDecode->DecodeDcsClassGroupPdu(dcs, smsDcs1);
591     EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::SMS_CLASS_GROUP);
592 }
593 
594 /**
595  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamDecode_0005
596  * @tc.name     Test GsmSmsParamDecode DecodeDcsDeleteGroupPdu
597  * @tc.desc     Function test
598  */
599 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0005, 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->DecodeDcsDeleteGroupPdu(dcs, smsDcs);
606     EXPECT_EQ(smsDcs, nullptr);
607     SmsDcs *smsDcs1 = new SmsDcs();
608     gsmSmsParamDecode->DecodeDcsDeleteGroupPdu(dcs, smsDcs1);
609     EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::CODING_DELETION_GROUP);
610 }
611 
612 /**
613  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamDecode_0006
614  * @tc.name     Test GsmSmsParamDecode DecodeDcsDiscardGroupPdu
615  * @tc.desc     Function test
616  */
617 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0006, Function | MediumTest | Level1)
618 {
619     auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
620     EXPECT_NE(gsmSmsParamDecode, nullptr);
621     uint8_t dcs = 0x08;
622     SmsDcs *smsDcs = nullptr;
623     gsmSmsParamDecode->DecodeDcsDiscardGroupPdu(dcs, smsDcs);
624     EXPECT_EQ(smsDcs, nullptr);
625     SmsDcs *smsDcs1 = new SmsDcs();
626     gsmSmsParamDecode->DecodeDcsDiscardGroupPdu(dcs, smsDcs1);
627     EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::CODING_DISCARD_GROUP);
628 }
629 
630 /**
631  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamDecode_0007
632  * @tc.name     Test GsmSmsParamDecode DecodeDcsStoreGsmGroupPdu
633  * @tc.desc     Function test
634  */
635 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0007, Function | MediumTest | Level1)
636 {
637     auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
638     EXPECT_NE(gsmSmsParamDecode, nullptr);
639     uint8_t dcs = 0x08;
640     SmsDcs *smsDcs = nullptr;
641     gsmSmsParamDecode->DecodeDcsStoreGsmGroupPdu(dcs, smsDcs);
642     EXPECT_EQ(smsDcs, nullptr);
643     SmsDcs *smsDcs1 = new SmsDcs();
644     gsmSmsParamDecode->DecodeDcsStoreGsmGroupPdu(dcs, smsDcs1);
645     EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::CODING_STORE_GROUP);
646     EXPECT_EQ(smsDcs1->codingScheme, OHOS::Telephony::DATA_CODING_7BIT);
647 }
648 
649 /**
650  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamDecode_0008
651  * @tc.name     Test GsmSmsParamDecode DecodeDcsStoreUCS2GroupPdu
652  * @tc.desc     Function test
653  */
654 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0008, Function | MediumTest | Level1)
655 {
656     auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
657     EXPECT_NE(gsmSmsParamDecode, nullptr);
658     uint8_t dcs = 0x08;
659     SmsDcs *smsDcs = nullptr;
660     gsmSmsParamDecode->DecodeDcsStoreUCS2GroupPdu(dcs, smsDcs);
661     EXPECT_EQ(smsDcs, nullptr);
662     SmsDcs *smsDcs1 = new SmsDcs();
663     gsmSmsParamDecode->DecodeDcsStoreUCS2GroupPdu(dcs, smsDcs1);
664     EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::CODING_STORE_GROUP);
665     EXPECT_EQ(smsDcs1->codingScheme, OHOS::Telephony::DATA_CODING_UCS2);
666 }
667 
668 /**
669  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamDecode_0009
670  * @tc.name     Test GsmSmsParamDecode DecodeDcsUnknownGroupPdu
671  * @tc.desc     Function test
672  */
673 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0009, Function | MediumTest | Level1)
674 {
675     auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
676     EXPECT_NE(gsmSmsParamDecode, nullptr);
677     uint8_t dcs = 0x08;
678     SmsDcs *smsDcs = nullptr;
679     gsmSmsParamDecode->DecodeDcsUnknownGroupPdu(dcs, smsDcs);
680     EXPECT_EQ(smsDcs, nullptr);
681     SmsDcs *smsDcs1 = new SmsDcs();
682     gsmSmsParamDecode->DecodeDcsUnknownGroupPdu(dcs, smsDcs1);
683     EXPECT_EQ(smsDcs1->codingGroup, OHOS::Telephony::CODING_UNKNOWN_GROUP);
684     EXPECT_EQ(smsDcs1->msgClass, OHOS::Telephony::SMS_CLASS_UNKNOWN);
685 }
686 
687 
688 /**
689  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamDecode_0010
690  * @tc.name     Test GsmSmsParamDecode DecodeTimePduPartData
691  * @tc.desc     Function test
692  */
693 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0010, Function | MediumTest | Level1)
694 {
695     auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
696     EXPECT_NE(gsmSmsParamDecode, nullptr);
697     auto decodeBuffer = std::make_shared<SmsReadBuffer>("");
698     EXPECT_NE(decodeBuffer, nullptr);
699     EXPECT_TRUE(decodeBuffer->IsEmpty());
700     SmsTimeStamp *pTimeStamp = new SmsTimeStamp();
701     pTimeStamp->format = SmsTimeFormat::SMS_TIME_ABSOLUTE;
702     pTimeStamp->time.absolute.timeZone = -1;
703     EXPECT_EQ(gsmSmsParamDecode->DecodeTimePduPartData(*decodeBuffer, pTimeStamp), false); // first branch PickOneByte
704 
705     auto decodeBuffer1 = std::make_shared<SmsReadBuffer>("00");
706     EXPECT_NE(decodeBuffer1, nullptr);
707     EXPECT_FALSE(decodeBuffer1->IsEmpty());
708     decodeBuffer1->bitIndex_ = 1;
709     EXPECT_EQ(gsmSmsParamDecode->DecodeTimePduPartData(*decodeBuffer1, pTimeStamp), false); // fifth branch ReadByte
710     EXPECT_EQ(gsmSmsParamDecode->DecodeTimePduPartData(*decodeBuffer1, pTimeStamp), false); // third branch ReadByte
711 }
712 
713 /**
714  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamDecode_0011
715  * @tc.name     Test GsmSmsParamDecode DecodeTimePduData
716  * @tc.desc     Function test
717  */
718 HWTEST_F(BranchSmsPartTest, GsmSmsParamDecode_0011, Function | MediumTest | Level1)
719 {
720     auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
721     EXPECT_NE(gsmSmsParamDecode, nullptr);
722     auto decodeBuffer = std::make_shared<SmsReadBuffer>("");
723     EXPECT_NE(decodeBuffer, nullptr);
724     EXPECT_FALSE(gsmSmsParamDecode->DecodeTimePduData(*decodeBuffer, nullptr)); // first branch nullptr
725 
726     SmsTimeStamp *pTimeStamp = new SmsTimeStamp();
727     pTimeStamp->format = SmsTimeFormat::SMS_TIME_ABSOLUTE;
728     pTimeStamp->time.absolute.timeZone = -1;
729     EXPECT_FALSE(gsmSmsParamDecode->DecodeTimePduData(*decodeBuffer, pTimeStamp)); // second branch PickOneByte
730 
731     auto decodeBuffer1 = std::make_shared<SmsReadBuffer>("00");
732     EXPECT_NE(decodeBuffer1, nullptr);
733     EXPECT_TRUE(gsmSmsParamDecode->DecodeTimePduData(*decodeBuffer1, pTimeStamp));
734     EXPECT_FALSE(gsmSmsParamDecode->DecodeTimePduData(*decodeBuffer1, pTimeStamp)); // second branch PickOneByte
735 
736     auto decodeBuffer2 = std::make_shared<SmsReadBuffer>("16D131D98C56B3DD7039584C36A3D56C375C0E169301");
737     EXPECT_NE(decodeBuffer2, nullptr);
738     EXPECT_TRUE(gsmSmsParamDecode->DecodeTimePduData(*decodeBuffer2, pTimeStamp));
739 }
740 
741 /**
742  * @tc.number   Telephony_SmsMmsGtest_DecodeAddressAlphaNum_0001
743  * @tc.name     Test GsmSmsParamDecode DecodeAddressAlphaNum
744  * @tc.desc     Function test
745  */
746 HWTEST_F(BranchSmsPartTest, DecodeAddressAlphaNum_0001, Function | MediumTest | Level1)
747 {
748     auto gsmSmsParamDecode = std::make_shared<GsmSmsParamDecode>();
749     EXPECT_NE(gsmSmsParamDecode, nullptr);
750     auto buffer = std::make_shared<SmsReadBuffer>("00");
751     AddressNumber *pAddress = new AddressNumber();
752     uint8_t bcdLen = 1;
753     uint8_t addrLen = 1;
754     EXPECT_FALSE(gsmSmsParamDecode->DecodeAddressAlphaNum(*buffer, pAddress, bcdLen, addrLen)); // third branch
755 
756     std::string pdu = StringUtils::HexToString("");
757     auto decodeBuffer1 = std::make_shared<SmsReadBuffer>(pdu);
758     printf("decodeBuffer1 index_ = %d, length_ = %d\n", decodeBuffer1->index_, decodeBuffer1->length_);
759     EXPECT_FALSE(gsmSmsParamDecode->DecodeAddressAlphaNum(*buffer, pAddress, bcdLen, addrLen)); // first branch
760 }
761 
762 /**
763  * @tc.number   Telephony_SmsMmsGtest_GsmSmsMessage_0004
764  * @tc.name     Test GsmSmsMessage
765  * @tc.desc     Function test
766  */
767 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0004, Function | MediumTest | Level1)
768 {
769     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
770     EXPECT_TRUE(gsmSmsMessage != nullptr);
771     unsigned char langId = 0;
772     gsmSmsMessage->smsTpdu_ = std::make_shared<struct SmsTpdu>();
773     gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_STATUS_REP;
774     EXPECT_EQ(gsmSmsMessage->SetHeaderLang(1, DataCodingScheme::DATA_CODING_UCS2, langId), 0);
775 }
776 
777 /**
778  * @tc.number   Telephony_SmsMmsGtest_GsmSmsMessage_0005
779  * @tc.name     Test GsmSmsMessage
780  * @tc.desc     Function test
781  */
782 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0005, Function | MediumTest | Level1)
783 {
784     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
785     EXPECT_TRUE(gsmSmsMessage != nullptr);
786     SmsConcat concat;
787     gsmSmsMessage->smsTpdu_ = std::make_shared<struct SmsTpdu>();
788     gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_STATUS_REP;
789     EXPECT_EQ(gsmSmsMessage->SetHeaderConcat(1, concat), 0);
790 }
791 
792 /**
793  * @tc.number   Telephony_SmsMmsGtest_GsmSmsMessage_0006
794  * @tc.name     Test GsmSmsMessage
795  * @tc.desc     Function test
796  */
797 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0006, Function | MediumTest | Level1)
798 {
799     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
800     EXPECT_TRUE(gsmSmsMessage != nullptr);
801     gsmSmsMessage->smsTpdu_ = nullptr;
802     EXPECT_EQ(gsmSmsMessage->SetHeaderReply(1), 0);
803 
804     gsmSmsMessage->smsTpdu_ = std::make_shared<struct SmsTpdu>();
805     gsmSmsMessage->replyAddress_ = "+13588421254";
806     gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_STATUS_REP;
807     EXPECT_EQ(gsmSmsMessage->SetHeaderReply(1), 0);
808 }
809 
810 /**
811  * @tc.number   Telephony_SmsMmsGtest_GsmSmsMessage_0007
812  * @tc.name     Test GsmSmsMessage CreateDefaultSubmit
813  * @tc.desc     Function test
814  */
815 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0007, Function | MediumTest | Level1)
816 {
817     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
818     EXPECT_TRUE(gsmSmsMessage != nullptr);
819     gsmSmsMessage->CreateDefaultSubmit(false, DataCodingScheme::DATA_CODING_7BIT);
820     EXPECT_EQ(gsmSmsMessage->smsTpdu_->tpduType, OHOS::Telephony::SmsTpduType::SMS_TPDU_SUBMIT);
821 }
822 
823 /**
824  * @tc.number   Telephony_SmsMmsGtest_GsmSmsMessage_0008
825  * @tc.name     Test GsmSmsMessage PduAnalysisMsg
826  * @tc.desc     Function test
827  */
828 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0008, Function | MediumTest | Level1)
829 {
830     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
831     EXPECT_TRUE(gsmSmsMessage != nullptr);
832     gsmSmsMessage->smsTpdu_ = std::make_shared<struct SmsTpdu>();
833     gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_STATUS_REP;
834     // also test AnalysisMsgDeliver
835     EXPECT_TRUE(gsmSmsMessage->PduAnalysisMsg());
836     gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_SUBMIT;
837     // alse test AnalysisMsgSubmit
838     EXPECT_TRUE(gsmSmsMessage->PduAnalysisMsg());
839     gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_DELIVER_REP;
840     EXPECT_FALSE(gsmSmsMessage->PduAnalysisMsg());
841 }
842 
843 /**
844  * @tc.number   Telephony_SmsMmsGtest_GsmSmsMessage_0009
845  * @tc.name     Test GsmSmsMessage ConvertUserData and ConvertUserPartData
846  * @tc.desc     Function test
847  */
848 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0009, Function | MediumTest | Level1)
849 {
850     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
851     EXPECT_TRUE(gsmSmsMessage != nullptr);
852 
853     gsmSmsMessage->smsTpdu_ = std::make_shared<struct SmsTpdu>();
854     gsmSmsMessage->smsTpdu_->tpduType = OHOS::Telephony::SmsTpduType::SMS_TPDU_DELIVER;
855     gsmSmsMessage->codingScheme_ = OHOS::Telephony::DataCodingScheme::DATA_CODING_7BIT;
856     size_t  oldSize = gsmSmsMessage->visibleMessageBody_.size();
857     gsmSmsMessage->smsUserData_.header[0].udh.singleShift.langId = 1;
858     std::string text = "1234566";
859     gsmSmsMessage->SetFullText(text);
860     gsmSmsMessage->ConvertUserData();
861     size_t  newSize = gsmSmsMessage->visibleMessageBody_.size();
862     EXPECT_EQ(newSize, oldSize);
863 
864     gsmSmsMessage->codingScheme_ = OHOS::Telephony::DataCodingScheme::DATA_CODING_UCS2;
865     oldSize = gsmSmsMessage->visibleMessageBody_.size();
866     gsmSmsMessage->ConvertUserData();
867     newSize = gsmSmsMessage->visibleMessageBody_.size();
868     EXPECT_EQ(newSize, oldSize);
869 }
870 
871 /**
872  * @tc.number   Telephony_SmsMmsGtest_GsmSmsMessage_0010
873  * @tc.name     Test GsmSmsMessage IsSpecialMessage
874  * @tc.desc     Function test
875  */
876 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0010, Function | MediumTest | Level1)
877 {
878     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
879     EXPECT_TRUE(gsmSmsMessage != nullptr);
880     gsmSmsMessage->protocolId_ = 0x40;
881     EXPECT_TRUE(gsmSmsMessage->IsSpecialMessage());
882 
883     gsmSmsMessage->msgClass_ = OHOS::Telephony::SmsMessageClass::SMS_SIM_MESSAGE;
884     gsmSmsMessage->protocolId_ = 0x7f;
885     EXPECT_TRUE(gsmSmsMessage->IsSpecialMessage());
886 
887     gsmSmsMessage->protocolId_ = 0x7c;
888     EXPECT_TRUE(gsmSmsMessage->IsSpecialMessage());
889 
890     gsmSmsMessage->protocolId_ = 0x41;
891     gsmSmsMessage->bMwiSet_ = true;
892     EXPECT_TRUE(gsmSmsMessage->IsSpecialMessage());
893 
894     gsmSmsMessage->bMwiClear_ = true;
895     EXPECT_TRUE(gsmSmsMessage->IsSpecialMessage());
896 }
897 
898 /**
899  * @tc.number   Telephony_SmsMmsGtest_GsmSmsMessage_0011
900  * @tc.name     Test GsmSmsMessage DecodeMessage
901  * @tc.desc     Function test
902  */
903 HWTEST_F(BranchSmsPartTest, GsmSmsMessage_0011, Function | MediumTest | Level1)
904 {
905     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
906     EXPECT_TRUE(gsmSmsMessage != nullptr);
907 
908     std::string msgText("");
909     // init destination array of pdu data
910     uint8_t decodeData[(MAX_GSM_7BIT_DATA_LEN * OHOS::Telephony::MAX_SEGMENT_NUM) + 1];
911     EXPECT_EQ(memset_s(decodeData, sizeof(decodeData), 0x00, sizeof(decodeData)), EOK);
912 
913     int encodeLen = 0;
914     bool bAbnormal = false;
915     unsigned char langId = OHOS::Telephony::MsgLanguageId::MSG_ID_RESERVED_LANG;
916     OHOS::Telephony::DataCodingScheme codingType = OHOS::Telephony::DataCodingScheme::DATA_CODING_7BIT;
917 
918     encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
919     EXPECT_EQ(encodeLen, 0);
920 
921     msgText = "123456";
922     encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
923     EXPECT_GT(encodeLen, 0);
924 
925     codingType = OHOS::Telephony::DataCodingScheme::DATA_CODING_8BIT;
926     encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
927     EXPECT_GT(encodeLen, 0);
928 
929     msgText.append(sizeof(decodeData), '1');
930     encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
931     EXPECT_EQ(encodeLen, 0);
932 
933     msgText = "123456";
934     codingType = OHOS::Telephony::DataCodingScheme::DATA_CODING_UCS2;
935     encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
936     EXPECT_GT(encodeLen, 0);
937 
938     codingType = OHOS::Telephony::DataCodingScheme::DATA_CODING_AUTO;
939     encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
940     EXPECT_GT(encodeLen, 0);
941 
942     codingType = OHOS::Telephony::DataCodingScheme::DATA_CODING_EUCKR;
943     encodeLen = gsmSmsMessage->DecodeMessage(decodeData, sizeof(decodeData), codingType, msgText, bAbnormal, langId);
944     EXPECT_GT(encodeLen, 0);
945 }
946 
947 /**
948  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamCodec_0016
949  * @tc.name     Test GsmSmsParamCodec EncodeAddressPdu
950  * @tc.desc     Function test
951  */
952 HWTEST_F(BranchSmsPartTest, GsmSmsParamCodec_0016, Function | MediumTest | Level1)
953 {
954     auto gsmSmsParamCodec = std::make_shared<GsmSmsParamCodec>();
955     AddressNumber *pAddress = new AddressNumber();
956     std::string paramStr;
957 
958     std::string smsc = "**21*1300555002012345";
959     memcpy_s(&pAddress->address, sizeof(pAddress->address), smsc.data(), smsc.length());
960     pAddress->address[smsc.length()] = '\0';
961     pAddress->ton = TYPE_INTERNATIONAL;
962     pAddress->npi = SMS_NPI_ISDN;
963     EXPECT_FALSE(gsmSmsParamCodec->EncodeAddressPdu(pAddress, paramStr)); // second branch
964 }
965 
966 /**
967  * @tc.number   Telephony_SmsMmsGtest_GsmSmsParamCodec_0017
968  * @tc.name     Test GsmSmsParamCodec EncodeSmscPdu
969  * @tc.desc     Function test
970  */
971 HWTEST_F(BranchSmsPartTest, GsmSmsParamCodec_0017, Function | MediumTest | Level1)
972 {
973     /*
974      *   test third branch
975      */
976     auto gsmSmsParamCodec = std::make_shared<GsmSmsParamCodec>();
977     EXPECT_NE(gsmSmsParamCodec, nullptr);
978     const std::string smsc = "+17005550020";
979     AddressNumber *pAddress = new AddressNumber();
980     uint8_t encodeSmscAddr[MAX_SMSC_LEN];
981     memset_s(encodeSmscAddr, sizeof(encodeSmscAddr), 0x00, sizeof(encodeSmscAddr));
982     std::string decodeAddr;
983     memcpy_s(&pAddress->address, sizeof(pAddress->address), smsc.data(), smsc.length());
984     pAddress->address[smsc.length()] = '\0';
985     pAddress->ton = TYPE_INTERNATIONAL;
986     pAddress->npi = SMS_NPI_ISDN;
987     uint8_t encodeSmscLen = 0;
988     encodeSmscLen = gsmSmsParamCodec->EncodeSmscPdu(pAddress, encodeSmscAddr, sizeof(encodeSmscAddr));
989     EXPECT_GT(encodeSmscLen, 0);
990 }
991 
992 /**
993  * @tc.number   Telephony_SmsMmsGtest_GsmSmsTpduCodec_0005
994  * @tc.name     Test GsmSmsTpduCodec EncodeSubmitPdu
995  * @tc.desc     Function test
996  */
997 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0005, Function | MediumTest | Level1)
998 {
999     auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1000     auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1001     encodeBuffer->data_[0] = 1;
1002     SmsSubmit *pSubmit = new SmsSubmit();
1003     /*
1004      * parameter check
1005      */
1006     auto encode = std::make_shared<GsmSmsTpduEncode>(nullptr, tpduCodec->paramCodec_, tpduCodec);
1007     EXPECT_FALSE(encode->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1008     auto encode1 = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, nullptr, tpduCodec);
1009     EXPECT_FALSE(encode1->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1010 
1011     auto encode2 = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1012     EXPECT_TRUE(encode2->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1013     /*
1014      * third branch
1015      */
1016     const std::string smsc = "+17005550020324556627";
1017     memcpy_s(&pSubmit->destAddress.address, sizeof(pSubmit->destAddress.address), smsc.data(), smsc.length());
1018     pSubmit->destAddress.address[smsc.length()] = '\0';
1019     EXPECT_FALSE(encode2->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1020 
1021     delete pSubmit;
1022     pSubmit = nullptr;
1023 }
1024 
1025 /**
1026  * @tc.number   Telephony_SmsMmsGtest_GsmSmsTpduCodec_0006
1027  * @tc.name     Test GsmSmsTpduCodec EncodeSubmitPduPartData
1028  * @tc.desc     Function test
1029  */
1030 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0006, Function | MediumTest | Level1)
1031 {
1032     auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1033     auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1034     SmsSubmit *pSubmit = new SmsSubmit();
1035     auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1036     EXPECT_NE(encode, nullptr);
1037     /*
1038      * parameter check
1039      */
1040     encodeBuffer->data_ = nullptr;
1041     EXPECT_FALSE(encode->EncodeSubmitPduPartData(*encodeBuffer, pSubmit));
1042     /*
1043      * third branch
1044      */
1045     encodeBuffer->index_ = 0;
1046     pSubmit->vpf = OHOS::Telephony::SmsVpf::SMS_VPF_ENHANCED;
1047     EXPECT_FALSE(encode->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1048 
1049     encodeBuffer->data_ = nullptr;
1050     EXPECT_FALSE(encode->EncodeSubmitPdu(*encodeBuffer, pSubmit));
1051 
1052     delete pSubmit;
1053     pSubmit = nullptr;
1054 }
1055 
1056 /**
1057  * @tc.number   Telephony_SmsMmsGtest_GsmSmsTpduCodec_0007
1058  * @tc.name     Test GsmSmsTpduCodec EncodeSubmitTpduType
1059  * @tc.desc     Function test
1060  */
1061 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0007, Function | MediumTest | Level1)
1062 {
1063     auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1064     auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1065     SmsSubmit pSubmit;
1066     auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1067     EXPECT_NE(encode, nullptr);
1068 
1069     /*
1070      * parameter check
1071      */
1072     pSubmit.bRejectDup = false;
1073     encodeBuffer->data_ = nullptr;
1074     uint16_t count = encodeBuffer->GetSize();
1075     encode->EncodeSubmitTpduType(*encodeBuffer, pSubmit);
1076     EXPECT_EQ(encodeBuffer->GetSize(), count);
1077     /*
1078      * third branch
1079      */
1080     auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1081     encodeBuffer2->data_[0] = 1;
1082     encodeBuffer2->bitIndex_ = 1;
1083     uint16_t count2 = encodeBuffer2->GetSize();
1084     encode->EncodeSubmitTpduType(*encodeBuffer2, pSubmit);
1085     EXPECT_EQ(encodeBuffer2->GetSize(), count2);
1086 }
1087 
1088 /**
1089  * @tc.number   Telephony_SmsMmsGtest_GsmSmsTpduCodec_0008
1090  * @tc.name     Test GsmSmsTpduCodec EncodeSubmitTypePartData
1091  * @tc.desc     Function test
1092  */
1093 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0008, Function | MediumTest | Level1)
1094 {
1095     auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1096     auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1097     SmsSubmit pSubmit;
1098     auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1099     EXPECT_NE(encode, nullptr);
1100     pSubmit.bStatusReport = false;
1101     pSubmit.bHeaderInd = false;
1102     pSubmit.bReplyPath = false;
1103     /*
1104      * SMS_VPF_ENHANCED
1105      */
1106     pSubmit.vpf = OHOS::Telephony::SmsVpf::SMS_VPF_ENHANCED;
1107     encodeBuffer->data_ = nullptr;
1108     uint16_t count1 = encodeBuffer->GetSize();
1109     encode->EncodeSubmitTypePartData(*encodeBuffer, pSubmit);
1110     EXPECT_EQ(encodeBuffer->GetSize(), count1);
1111 
1112     auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1113     encodeBuffer2->data_[0] = 1;
1114     encodeBuffer2->index_ = 1;
1115     uint16_t count2 = encodeBuffer2->GetSize();
1116     encode->EncodeSubmitTypePartData(*encodeBuffer2, pSubmit);
1117     EXPECT_EQ(encodeBuffer2->GetSize(), count2);
1118     /*
1119      * SMS_VPF_RELATIVE
1120      */
1121     pSubmit.vpf = OHOS::Telephony::SmsVpf::SMS_VPF_ENHANCED;
1122     auto encodeBuffer3 = std::make_shared<SmsWriteBuffer>();
1123     encodeBuffer3->data_ = nullptr;
1124     uint16_t count3 = encodeBuffer3->GetSize();
1125     encode->EncodeSubmitTypePartData(*encodeBuffer3, pSubmit);
1126     EXPECT_EQ(encodeBuffer3->GetSize(), count3);
1127 
1128     auto encodeBuffer4 = std::make_shared<SmsWriteBuffer>();
1129     encodeBuffer4->data_[0] = 1;
1130     encodeBuffer4->index_ = 1;
1131     uint16_t count4 = encodeBuffer4->GetSize();
1132     encode->EncodeSubmitTypePartData(*encodeBuffer4, pSubmit);
1133     EXPECT_EQ(encodeBuffer4->GetSize(), count4);
1134     /*
1135      * SMS_VPF_RELATIVE
1136      */
1137     pSubmit.vpf = OHOS::Telephony::SmsVpf::SMS_VPF_RELATIVE;
1138     auto encodeBuffer5 = std::make_shared<SmsWriteBuffer>();
1139     encodeBuffer5->data_ = nullptr;
1140     uint16_t count5 = encodeBuffer5->GetSize();
1141     encode->EncodeSubmitTypePartData(*encodeBuffer5, pSubmit);
1142     EXPECT_EQ(encodeBuffer5->GetSize(), count5);
1143 
1144     auto encodeBuffer6 = std::make_shared<SmsWriteBuffer>();
1145     encodeBuffer6->data_[0] = 1;
1146     encodeBuffer6->index_ = 1;
1147     uint16_t count6 = encodeBuffer6->GetSize();
1148     encode->EncodeSubmitTypePartData(*encodeBuffer6, pSubmit);
1149     EXPECT_EQ(encodeBuffer6->GetSize(), count6);
1150 }
1151 
1152 /**
1153  * @tc.number   Telephony_SmsMmsGtest_GsmSmsTpduCodec_0009
1154  * @tc.name     Test GsmSmsTpduCodec EncodeSubmitTypePartData
1155  * @tc.desc     Function test
1156  */
1157 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0009, Function | MediumTest | Level1)
1158 {
1159     auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1160     auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1161     SmsSubmit pSubmit;
1162     auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1163     EXPECT_NE(encode, nullptr);
1164     pSubmit.bStatusReport = false;
1165     pSubmit.bHeaderInd = false;
1166     pSubmit.bReplyPath = false;
1167     /*
1168      * SMS_VPF_ABSOLUTE
1169      */
1170     pSubmit.vpf = OHOS::Telephony::SmsVpf::SMS_VPF_ABSOLUTE;
1171     auto encodeBuffer7 = std::make_shared<SmsWriteBuffer>();
1172     encodeBuffer7->data_ = nullptr;
1173     uint16_t count7 = encodeBuffer7->GetSize();
1174     encode->EncodeSubmitTypePartData(*encodeBuffer7, pSubmit);
1175     EXPECT_EQ(encodeBuffer7->GetSize(), count7);
1176 
1177     auto encodeBuffer8 = std::make_shared<SmsWriteBuffer>();
1178     encodeBuffer8->data_[0] = 1;
1179     encodeBuffer8->index_ = 1;
1180     uint16_t count8 = encodeBuffer8->GetSize();
1181     encode->EncodeSubmitTypePartData(*encodeBuffer8, pSubmit);
1182     EXPECT_EQ(encodeBuffer8->GetSize(), count8);
1183     /*
1184      * SMS_VPF_NOT_PRESENT
1185      */
1186     pSubmit.vpf = OHOS::Telephony::SmsVpf::SMS_VPF_NOT_PRESENT;
1187     auto encodeBuffer9 = std::make_shared<SmsWriteBuffer>();
1188     encodeBuffer9->data_ = nullptr;
1189     uint16_t count9 = encodeBuffer9->GetSize();
1190     encode->EncodeSubmitTypePartData(*encodeBuffer9, pSubmit);
1191     EXPECT_EQ(encodeBuffer9->GetSize(), count9);
1192 }
1193 
1194 /**
1195  * @tc.number   Telephony_SmsMmsGtest_GsmSmsTpduCodec_0010
1196  * @tc.name     Test GsmSmsTpduCodec EncodeSubmitTypeData
1197  * @tc.desc     Function test
1198  */
1199 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0010, Function | MediumTest | Level1)
1200 {
1201     auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1202     auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1203     SmsSubmit pSubmit;
1204     auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1205     EXPECT_NE(encode, nullptr);
1206     /*
1207      * pSubmit->bStatusReport is true
1208      */
1209     pSubmit.bStatusReport = true;
1210     encode->EncodeSubmitTypePartData(*encodeBuffer, pSubmit);
1211     auto encodeBuffer1 = std::make_shared<SmsWriteBuffer>();
1212     encodeBuffer1->data_[0] = 1;
1213     encodeBuffer1->index_ = 1;
1214     uint16_t count1 = encodeBuffer1->GetSize();
1215     encode->EncodeSubmitTypePartData(*encodeBuffer1, pSubmit);
1216     EXPECT_EQ(encodeBuffer1->GetSize(), count1);
1217     /*
1218      * pSubmit.bHeaderInd is true
1219      */
1220     auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1221     pSubmit.bStatusReport = false;
1222     pSubmit.bHeaderInd = true;
1223     const std::string smsc = "17005550020";
1224     memcpy_s(&pSubmit.destAddress.address, sizeof(pSubmit.destAddress.address), smsc.data(), smsc.length());
1225     pSubmit.destAddress.address[smsc.length()] = '\0';
1226     encodeBuffer2->data_ = nullptr;
1227     uint16_t count2 = encodeBuffer2->GetSize();
1228     encode->EncodeSubmitTypePartData(*encodeBuffer2, pSubmit);
1229     EXPECT_EQ(encodeBuffer2->GetSize(), count2);
1230 
1231     auto encodeBuffer3 = std::make_shared<SmsWriteBuffer>();
1232     encodeBuffer3->data_[0] = 1;
1233     encodeBuffer3->index_ = 1;
1234     uint16_t count3 = encodeBuffer3->GetSize();
1235     encode->EncodeSubmitTypePartData(*encodeBuffer3, pSubmit);
1236     EXPECT_EQ(encodeBuffer3->GetSize(), count3);
1237     /*
1238      * pSubmit.bReplyPath is true
1239      */
1240     pSubmit.bStatusReport = false;
1241     pSubmit.bHeaderInd = false;
1242     pSubmit.bReplyPath = true;
1243     auto encodeBuffer4 = std::make_shared<SmsWriteBuffer>();
1244     encodeBuffer4->data_ = nullptr;
1245     uint16_t count4 = encodeBuffer4->GetSize();
1246     encode->EncodeSubmitTypePartData(*encodeBuffer4, pSubmit);
1247     EXPECT_EQ(encodeBuffer4->GetSize(), count4);
1248 
1249     auto encodeBuffer5 = std::make_shared<SmsWriteBuffer>();
1250     encodeBuffer5->data_[0] = 1;
1251     encodeBuffer5->index_ = 1;
1252     uint16_t count5 = encodeBuffer5->GetSize();
1253     encode->EncodeSubmitTypePartData(*encodeBuffer5, pSubmit);
1254     EXPECT_EQ(encodeBuffer5->GetSize(), count5);
1255 }
1256 
1257 /**
1258  * @tc.number   Telephony_SmsMmsGtest_GsmSmsTpduCodec_0011
1259  * @tc.name     Test GsmSmsTpduCodec EncodeDeliverPdu
1260  * @tc.desc     Function test
1261  */
1262 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0011, Function | MediumTest | Level1)
1263 {
1264     auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1265     auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1266     SmsDeliver *pDeliver = new SmsDeliver();
1267     auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1268     EXPECT_NE(encode, nullptr);
1269     /*
1270      * second branch
1271      */
1272     encodeBuffer->data_ = nullptr;
1273     EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer, pDeliver));
1274     /*
1275      * third branch pDeliver->bMoreMsg is false
1276      */
1277     auto encodeBuffer1 = std::make_shared<SmsWriteBuffer>();
1278     pDeliver->bMoreMsg = false;
1279     EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer1, pDeliver));
1280 
1281     auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1282     encodeBuffer2->data_[0] = 1;
1283     encodeBuffer2->index_ = 1;
1284     EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer2, pDeliver));
1285     /*
1286      * fourth branch pDeliver->bStatusReport is true
1287      */
1288     pDeliver->bMoreMsg = true;
1289     pDeliver->bStatusReport = true;
1290     auto encodeBuffer3 = std::make_shared<SmsWriteBuffer>();
1291     EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer3, pDeliver));
1292 
1293     auto encodeBuffer4 = std::make_shared<SmsWriteBuffer>();
1294     encodeBuffer4->data_[0] = 1;
1295     encodeBuffer4->index_ = 1;
1296     EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer4, pDeliver));
1297     /*
1298      * fifth branch pDeliver->bHeaderInd is true
1299      */
1300     auto encodeBuffer5 = std::make_shared<SmsWriteBuffer>();
1301     pDeliver->bStatusReport = false;
1302     pDeliver->bHeaderInd = true;
1303     EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer5, pDeliver));
1304 
1305     auto encodeBuffer6 = std::make_shared<SmsWriteBuffer>();
1306     encodeBuffer6->data_[0] = 1;
1307     encodeBuffer6->index_ = 1;
1308     EXPECT_FALSE(encode->EncodeDeliverPdu(*encodeBuffer6, pDeliver));
1309 
1310     delete pDeliver;
1311     pDeliver = nullptr;
1312 }
1313 
1314 /**
1315  * @tc.number   Telephony_SmsMmsGtest_GsmSmsTpduCodec_0012
1316  * @tc.name     Test GsmSmsTpduCodec EncodeDeliverPartData
1317  * @tc.desc     Function test
1318  */
1319 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0012, Function | MediumTest | Level1)
1320 {
1321     auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1322     auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1323     SmsDeliver *pDeliver = new SmsDeliver();
1324     /*
1325      * parameter check
1326      */
1327     auto encode0 = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, nullptr, tpduCodec);
1328     EXPECT_NE(encode0, nullptr);
1329     EXPECT_FALSE(encode0->EncodeDeliverPartData(*encodeBuffer, pDeliver));
1330 
1331     auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1332     EXPECT_NE(encode, nullptr);
1333     /*
1334      * pDeliver->bReplyPath is true
1335      */
1336     pDeliver->bReplyPath = true;
1337     encodeBuffer->data_ = nullptr;
1338     EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer, pDeliver));
1339 
1340     auto encodeBuffer1 = std::make_shared<SmsWriteBuffer>();
1341     encodeBuffer1->data_[0] = 1;
1342     encodeBuffer1->index_ = 1;
1343     EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer, pDeliver));
1344     /*
1345      * third branch
1346      */
1347     auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1348     pDeliver->bReplyPath = false;
1349     const std::string smsc = "17005550020111111111";
1350     memcpy_s(&pDeliver->originAddress.address, sizeof(pDeliver->originAddress.address), smsc.data(), smsc.length());
1351     pDeliver->originAddress.address[smsc.length()] = '\0';
1352     EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer2, pDeliver));
1353     /*
1354      * fourth branch
1355      */
1356     auto encodeBuffer3 = std::make_shared<SmsWriteBuffer>();
1357     encodeBuffer3->data_[0] = 1;
1358     EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer3, pDeliver));
1359 
1360     delete pDeliver;
1361     pDeliver = nullptr;
1362 }
1363 
1364 /**
1365  * @tc.number   Telephony_SmsMmsGtest_GsmSmsTpduCodec_0013
1366  * @tc.name     Test GsmSmsTpduCodec EncodeDeliverData
1367  * @tc.desc     Function test
1368  */
1369 HWTEST_F(BranchSmsPartTest, GsmSmsTpduCodec_0013, Function | MediumTest | Level1)
1370 {
1371     auto tpduCodec = std::make_shared<GsmSmsTpduCodec>();
1372     auto encodeBuffer = std::make_shared<SmsWriteBuffer>();
1373     SmsDeliver *pDeliver = new SmsDeliver();
1374     /*
1375      * parameter check
1376      */
1377     auto encode0 = std::make_shared<GsmSmsTpduEncode>(nullptr, tpduCodec->paramCodec_, tpduCodec);
1378     EXPECT_NE(encode0, nullptr);
1379     EXPECT_FALSE(encode0->EncodeDeliverData(*encodeBuffer, pDeliver));
1380     /*
1381      * second branch
1382      */
1383     auto encode = std::make_shared<GsmSmsTpduEncode>(tpduCodec->uDataCodec_, tpduCodec->paramCodec_, tpduCodec);
1384     EXPECT_NE(encode, nullptr);
1385     encodeBuffer->data_ = nullptr;
1386     EXPECT_FALSE(encode->EncodeDeliverData(*encodeBuffer, pDeliver));
1387 
1388     auto encodeBuffer1 = std::make_shared<SmsWriteBuffer>();
1389     encodeBuffer->index_ = 1;
1390     EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer1, pDeliver));
1391     /*
1392      * main branch
1393      */
1394     auto encodeBuffer2 = std::make_shared<SmsWriteBuffer>();
1395     encodeBuffer2->data_[0] = 1;
1396     encodeBuffer2->index_ = 1;
1397     EXPECT_FALSE(encode->EncodeDeliverPartData(*encodeBuffer2, pDeliver));
1398 
1399     delete pDeliver;
1400     pDeliver = nullptr;
1401 }
1402 
1403 /**
1404  * @tc.number   Telephony_SmsMmsGtest_SmsBaseMessage_0001
1405  * @tc.name     Test SmsBaseMessage
1406  * @tc.desc     Function test
1407  */
1408 HWTEST_F(BranchSmsPartTest, SmsBaseMessage_0001, Function | MediumTest | Level1)
1409 {
1410     auto smsBaseMessage = std::make_shared<GsmSmsMessage>();
1411     smsBaseMessage->ConvertMessageClass(SmsMessageClass::SMS_SIM_MESSAGE);
1412     smsBaseMessage->ConvertMessageClass(SmsMessageClass::SMS_INSTANT_MESSAGE);
1413     smsBaseMessage->ConvertMessageClass(SmsMessageClass::SMS_OPTIONAL_MESSAGE);
1414     smsBaseMessage->ConvertMessageClass(SmsMessageClass::SMS_FORWARD_MESSAGE);
1415     smsBaseMessage->ConvertMessageClass(SmsMessageClass::SMS_CLASS_UNKNOWN);
1416     SplitInfo split;
1417     DataCodingScheme codingType = DataCodingScheme::DATA_CODING_7BIT;
1418     smsBaseMessage->ConvertSpiltToUtf8(split, codingType);
1419     split.encodeData.push_back(1);
1420     codingType = DataCodingScheme::DATA_CODING_UCS2;
1421     smsBaseMessage->ConvertSpiltToUtf8(split, codingType);
1422     codingType = DataCodingScheme::DATA_CODING_AUTO;
1423     smsBaseMessage->ConvertSpiltToUtf8(split, codingType);
1424     smsBaseMessage->smsUserData_.headerCnt = 1;
1425     smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_CONCAT_8BIT;
1426     EXPECT_FALSE(smsBaseMessage->GetConcatMsg() == nullptr);
1427     smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_CONCAT_16BIT;
1428     EXPECT_FALSE(smsBaseMessage->GetConcatMsg() == nullptr);
1429     smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_APP_PORT_8BIT;
1430     EXPECT_FALSE(smsBaseMessage->GetPortAddress() == nullptr);
1431     smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_APP_PORT_16BIT;
1432     EXPECT_FALSE(smsBaseMessage->GetPortAddress() == nullptr);
1433     smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_SPECIAL_SMS;
1434     EXPECT_FALSE(smsBaseMessage->GetSpecialSmsInd() == nullptr);
1435     smsBaseMessage->smsUserData_.header[0].udhType = UserDataHeadType::UDH_APP_PORT_8BIT;
1436     EXPECT_FALSE(smsBaseMessage->IsWapPushMsg());
1437     MSG_LANGUAGE_ID_T langId = 1;
1438     codingType = DataCodingScheme::DATA_CODING_7BIT;
1439     EXPECT_GT(smsBaseMessage->GetMaxSegmentSize(codingType, 1, true, langId, 1), 0);
1440     EXPECT_GT(smsBaseMessage->GetSegmentSize(codingType, 1, true, langId), 0);
1441     codingType = DataCodingScheme::DATA_CODING_ASCII7BIT;
1442     EXPECT_GT(smsBaseMessage->GetMaxSegmentSize(codingType, 1, true, langId, 1), 0);
1443     EXPECT_GT(smsBaseMessage->GetSegmentSize(codingType, 1, true, langId), 0);
1444     codingType = DataCodingScheme::DATA_CODING_8BIT;
1445     EXPECT_GT(smsBaseMessage->GetMaxSegmentSize(codingType, 1, true, langId, 1), 0);
1446     EXPECT_GT(smsBaseMessage->GetSegmentSize(codingType, 1, true, langId), 0);
1447     codingType = DataCodingScheme::DATA_CODING_UCS2;
1448     EXPECT_GT(smsBaseMessage->GetMaxSegmentSize(codingType, 1, true, langId, 1), 0);
1449     EXPECT_GT(smsBaseMessage->GetSegmentSize(codingType, 1, true, langId), 0);
1450     std::string message = "";
1451     LengthInfo lenInfo;
1452     EXPECT_GE(smsBaseMessage->GetSmsSegmentsInfo(message, true, lenInfo), 0);
1453     message = "123";
1454     EXPECT_EQ(smsBaseMessage->GetSmsSegmentsInfo(message, true, lenInfo), TELEPHONY_ERR_SUCCESS);
1455     EXPECT_EQ(smsBaseMessage->GetSmsSegmentsInfo(message, false, lenInfo), TELEPHONY_ERR_SUCCESS);
1456 }
1457 
1458 /**
1459  * @tc.number   Telephony_SmsMmsGtest_SmsBaseMessage_0002
1460  * @tc.name     Test SmsBaseMessage
1461  * @tc.desc     Function test
1462  */
1463 HWTEST_F(BranchSmsPartTest, SmsBaseMessage_0002, Function | MediumTest | Level1)
1464 {
1465     auto gsmSmsMessage = std::make_shared<GsmSmsMessage>();
1466     std::vector<struct SplitInfo> splitResult;
1467     DataCodingScheme codingType = DATA_CODING_AUTO;
1468     std::string text = {0xe4, 0xbd, 0xa0, 0xe4, 0xbd, 0xa0, 0xe4, 0xbd, 0xa0, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5,
1469         0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1470         0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1471         0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1472         0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1473         0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1474         0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1475         0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1476         0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3,
1477         0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3, 0xf0, 0x9f, 0xa5, 0xb3};
1478     std::string desAddr = "";
1479     gsmSmsMessage->SplitMessage(splitResult, text, false, codingType, false, desAddr);
1480     std::vector<unsigned char> expect1 = {0x4f, 0x60, 0x4f, 0x60, 0x4f, 0x60, 0xd8, 0x3e, 0xdd, 0x73,
1481         0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1482         0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1483         0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1484         0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1485         0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1486         0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1487         0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1488         0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73};
1489     std::vector<unsigned char> expect2 = {0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73,
1490         0xd8, 0x3e, 0xdd, 0x73, 0xd8, 0x3e, 0xdd, 0x73};
1491     EXPECT_TRUE(splitResult[0].encodeData == expect1);
1492     EXPECT_TRUE(splitResult[1].encodeData == expect2);
1493 }
1494 
1495 /**
1496  * @tc.number   Telephony_SmsMmsGtest_SmsPersistHelper_0002
1497  * @tc.name     Test SmsPersistHelper
1498  * @tc.desc     Function test
1499  */
1500 HWTEST_F(BranchSmsPartTest, SmsPersistHelper_0002, Function | MediumTest | Level1)
1501 {
1502     auto smsPersistHelper = DelayedSingleton<SmsPersistHelper>::GetInstance();
1503     smsPersistHelper->CreateSmsHelper();
1504     smsPersistHelper->SendEvent(0);
1505     uint32_t releaseDataShareHelperEventId = 10000;
1506     smsPersistHelper->SendEvent(releaseDataShareHelperEventId);
1507     EXPECT_TRUE(smsPersistHelper->smsDataShareHelper_ == nullptr);
1508     smsPersistHelper->RemoveEvent(releaseDataShareHelperEventId);
1509 }
1510 } // namespace Telephony
1511 } // namespace OHOS
1512