1e5d0e473Sopenharmony_ci/*
2e5d0e473Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
3e5d0e473Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4e5d0e473Sopenharmony_ci * you may not use this file except in compliance with the License.
5e5d0e473Sopenharmony_ci * You may obtain a copy of the License at
6e5d0e473Sopenharmony_ci *
7e5d0e473Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8e5d0e473Sopenharmony_ci *
9e5d0e473Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10e5d0e473Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11e5d0e473Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e5d0e473Sopenharmony_ci * See the License for the specific language governing permissions and
13e5d0e473Sopenharmony_ci * limitations under the License.
14e5d0e473Sopenharmony_ci */
15e5d0e473Sopenharmony_ci#include "mms_msg_test.h"
16e5d0e473Sopenharmony_ci
17e5d0e473Sopenharmony_ci#include <iostream>
18e5d0e473Sopenharmony_ci#include <sstream>
19e5d0e473Sopenharmony_ci
20e5d0e473Sopenharmony_ci#include "mms_codec_type.h"
21e5d0e473Sopenharmony_ci
22e5d0e473Sopenharmony_cinamespace OHOS {
23e5d0e473Sopenharmony_cinamespace Telephony {
24e5d0e473Sopenharmony_cistatic constexpr char HEX_TABLE[] = "0123456789ABCDEF";
25e5d0e473Sopenharmony_cistatic constexpr uint8_t HEX_OFFSET = 4;
26e5d0e473Sopenharmony_cistatic constexpr uint8_t MAX_LINE_NUM = 16;
27e5d0e473Sopenharmony_ci
28e5d0e473Sopenharmony_ciMmsMsgTest::MmsMsgTest() {}
29e5d0e473Sopenharmony_ci
30e5d0e473Sopenharmony_ciMmsMsgTest::~MmsMsgTest() {}
31e5d0e473Sopenharmony_ci
32e5d0e473Sopenharmony_civoid MmsMsgTest::ProcessDecodeInput(int inputCMD) const
33e5d0e473Sopenharmony_ci{
34e5d0e473Sopenharmony_ci    switch (inputCMD) {
35e5d0e473Sopenharmony_ci        case 0x00:
36e5d0e473Sopenharmony_ci            MmsDecodeTest("/data/app/deSrc/SendReq.mms");
37e5d0e473Sopenharmony_ci            break;
38e5d0e473Sopenharmony_ci        case 0x01:
39e5d0e473Sopenharmony_ci            MmsDecodeTest("/data/app/deSrc/SendConf.mms");
40e5d0e473Sopenharmony_ci            break;
41e5d0e473Sopenharmony_ci        case 0x02:
42e5d0e473Sopenharmony_ci            MmsDecodeTest("/data/app/deSrc/NotificationInd.mms");
43e5d0e473Sopenharmony_ci            break;
44e5d0e473Sopenharmony_ci        case 0x03:
45e5d0e473Sopenharmony_ci            MmsDecodeTest("/data/app/deSrc/NotifyRespInd.mms");
46e5d0e473Sopenharmony_ci            break;
47e5d0e473Sopenharmony_ci        case 0x04:
48e5d0e473Sopenharmony_ci            MmsDecodeTest("/data/app/deSrc/RetrieveConf.mms");
49e5d0e473Sopenharmony_ci            break;
50e5d0e473Sopenharmony_ci        case 0x05:
51e5d0e473Sopenharmony_ci            MmsDecodeTest("/data/app/deSrc/AcknowledgeInd.mms");
52e5d0e473Sopenharmony_ci            break;
53e5d0e473Sopenharmony_ci        case 0x06:
54e5d0e473Sopenharmony_ci            MmsDecodeTest("/data/app/deSrc/DeliveryInd.mms");
55e5d0e473Sopenharmony_ci            break;
56e5d0e473Sopenharmony_ci        case 0x07:
57e5d0e473Sopenharmony_ci            MmsDecodeTest("/data/app/deSrc/ReadRecInd.mms");
58e5d0e473Sopenharmony_ci            break;
59e5d0e473Sopenharmony_ci        case 0x08:
60e5d0e473Sopenharmony_ci            MmsDecodeTest("/data/app/deSrc/ReadOrigInd.mms");
61e5d0e473Sopenharmony_ci            break;
62e5d0e473Sopenharmony_ci        default:
63e5d0e473Sopenharmony_ci            break;
64e5d0e473Sopenharmony_ci    }
65e5d0e473Sopenharmony_ci}
66e5d0e473Sopenharmony_ci
67e5d0e473Sopenharmony_civoid MmsMsgTest::ProcessEncodeInput(int inputCMD)
68e5d0e473Sopenharmony_ci{
69e5d0e473Sopenharmony_ci    switch (inputCMD) {
70e5d0e473Sopenharmony_ci        case 0x09:
71e5d0e473Sopenharmony_ci            MmsSendReqEncodeTest();
72e5d0e473Sopenharmony_ci            break;
73e5d0e473Sopenharmony_ci        case 0x0a:
74e5d0e473Sopenharmony_ci            MmsSendConfEncodeTest();
75e5d0e473Sopenharmony_ci            break;
76e5d0e473Sopenharmony_ci        case 0x0b:
77e5d0e473Sopenharmony_ci            MmsNotificationIndEncodeTest();
78e5d0e473Sopenharmony_ci            break;
79e5d0e473Sopenharmony_ci        case 0x0c:
80e5d0e473Sopenharmony_ci            MmsNotifyRespIndEncodeTest();
81e5d0e473Sopenharmony_ci            break;
82e5d0e473Sopenharmony_ci        case 0x0d:
83e5d0e473Sopenharmony_ci            MmsRetrieveConfEncodeTest();
84e5d0e473Sopenharmony_ci            break;
85e5d0e473Sopenharmony_ci        case 0x0e:
86e5d0e473Sopenharmony_ci            MmsAcknowledgeIndEncodeTest();
87e5d0e473Sopenharmony_ci            break;
88e5d0e473Sopenharmony_ci        case 0x0f:
89e5d0e473Sopenharmony_ci            MmsDeliveryIndEncodeTest();
90e5d0e473Sopenharmony_ci            break;
91e5d0e473Sopenharmony_ci        case 0x10:
92e5d0e473Sopenharmony_ci            MmsReadRecIndEncodeTest();
93e5d0e473Sopenharmony_ci            break;
94e5d0e473Sopenharmony_ci        case 0x11:
95e5d0e473Sopenharmony_ci            MmsReadOrigIndEncodeTest();
96e5d0e473Sopenharmony_ci            break;
97e5d0e473Sopenharmony_ci        default:
98e5d0e473Sopenharmony_ci            break;
99e5d0e473Sopenharmony_ci    }
100e5d0e473Sopenharmony_ci}
101e5d0e473Sopenharmony_ci
102e5d0e473Sopenharmony_civoid MmsMsgTest::ProcessTest()
103e5d0e473Sopenharmony_ci{
104e5d0e473Sopenharmony_ci    bool loopFlag = true;
105e5d0e473Sopenharmony_ci    const int exitKey = 100;
106e5d0e473Sopenharmony_ci    while (loopFlag) {
107e5d0e473Sopenharmony_ci        std::cout << "\nusage:please input a cmd num:\n"
108e5d0e473Sopenharmony_ci                     "0:TestDecodeMmsSendReq\n"
109e5d0e473Sopenharmony_ci                     "1:TestDecodeMmsSendConf\n"
110e5d0e473Sopenharmony_ci                     "2:TestDecodeMmsNotificationInd\r\n"
111e5d0e473Sopenharmony_ci                     "3:TestDecodeMmsNotifyRespInd\r\n"
112e5d0e473Sopenharmony_ci                     "4:TestDecodeMmsRetrieveConf\r\n"
113e5d0e473Sopenharmony_ci                     "5:TestDecodeMmsAcknowledgeInd\r\n"
114e5d0e473Sopenharmony_ci                     "6:TestDecodeMmsDeliveryInd\r\n"
115e5d0e473Sopenharmony_ci                     "7:TestDecodeMmsReadRecInd\r\n"
116e5d0e473Sopenharmony_ci                     "8:TestDecodeMmsReadOrigInd\r\n"
117e5d0e473Sopenharmony_ci                     "9:TestEncodeMmsSendReq\r\n"
118e5d0e473Sopenharmony_ci                     "10:TestEncodeMmsSendConf\r\n"
119e5d0e473Sopenharmony_ci                     "11:TestEncodeMmsNotificationInd\r\n"
120e5d0e473Sopenharmony_ci                     "12:TestEncodeMmsNotifyRespInd\r\n"
121e5d0e473Sopenharmony_ci                     "13:TestEncodeMmsRetrieveConf\r\n"
122e5d0e473Sopenharmony_ci                     "14:TestEncodeMmsAcknowledgeInd\r\n"
123e5d0e473Sopenharmony_ci                     "15:TestEncodeMmsDeliveryInd\r\n"
124e5d0e473Sopenharmony_ci                     "16:TestEncodeMmsReadRecInd\r\n"
125e5d0e473Sopenharmony_ci                     "17:TestEncodeMmsReadOrigInd\r\n"
126e5d0e473Sopenharmony_ci                     "100:exit test mms msg\n"
127e5d0e473Sopenharmony_ci                  << std::endl;
128e5d0e473Sopenharmony_ci
129e5d0e473Sopenharmony_ci        int inputCMD = 0;
130e5d0e473Sopenharmony_ci        std::cin >> inputCMD;
131e5d0e473Sopenharmony_ci        while (std::cin.fail()) {
132e5d0e473Sopenharmony_ci            std::cin.clear();
133e5d0e473Sopenharmony_ci            std::cin.ignore();
134e5d0e473Sopenharmony_ci            std::cin >> inputCMD;
135e5d0e473Sopenharmony_ci        }
136e5d0e473Sopenharmony_ci        if (inputCMD == exitKey) {
137e5d0e473Sopenharmony_ci            return;
138e5d0e473Sopenharmony_ci        }
139e5d0e473Sopenharmony_ci        std::cout << "inputCMD is:" << inputCMD << std::endl;
140e5d0e473Sopenharmony_ci        ProcessDecodeInput(inputCMD);
141e5d0e473Sopenharmony_ci        ProcessEncodeInput(inputCMD);
142e5d0e473Sopenharmony_ci    }
143e5d0e473Sopenharmony_ci}
144e5d0e473Sopenharmony_ci
145e5d0e473Sopenharmony_civoid MmsMsgTest::MmsDecodeTest(std::string strPath) const
146e5d0e473Sopenharmony_ci{
147e5d0e473Sopenharmony_ci    MmsMsg decodeMsg;
148e5d0e473Sopenharmony_ci    if (!decodeMsg.DecodeMsg(strPath)) {
149e5d0e473Sopenharmony_ci        std::cout << "mms decode message fail." << std::endl;
150e5d0e473Sopenharmony_ci        std::cout << "mms file path name:" << strPath << std::endl;
151e5d0e473Sopenharmony_ci        return;
152e5d0e473Sopenharmony_ci    }
153e5d0e473Sopenharmony_ci    decodeMsg.DumpMms();
154e5d0e473Sopenharmony_ci    uint8_t messageType = decodeMsg.GetMmsMessageType();
155e5d0e473Sopenharmony_ci    switch (messageType) {
156e5d0e473Sopenharmony_ci        case MMS_MSGTYPE_SEND_REQ:
157e5d0e473Sopenharmony_ci            MmsSendReqDecodeTest(decodeMsg);
158e5d0e473Sopenharmony_ci            break;
159e5d0e473Sopenharmony_ci        case MMS_MSGTYPE_SEND_CONF:
160e5d0e473Sopenharmony_ci            MmsSendConfDecodeTest(decodeMsg);
161e5d0e473Sopenharmony_ci            break;
162e5d0e473Sopenharmony_ci        case MMS_MSGTYPE_NOTIFICATION_IND:
163e5d0e473Sopenharmony_ci            MmsNotificationIndDecodeTest(decodeMsg);
164e5d0e473Sopenharmony_ci            break;
165e5d0e473Sopenharmony_ci        case MMS_MSGTYPE_NOTIFYRESP_IND:
166e5d0e473Sopenharmony_ci            MmsNotifyRespIndDecodeTest(decodeMsg);
167e5d0e473Sopenharmony_ci            break;
168e5d0e473Sopenharmony_ci        case MMS_MSGTYPE_RETRIEVE_CONF:
169e5d0e473Sopenharmony_ci            MmsRetrieveConfDecodeTest(decodeMsg);
170e5d0e473Sopenharmony_ci            break;
171e5d0e473Sopenharmony_ci        case MMS_MSGTYPE_ACKNOWLEDGE_IND:
172e5d0e473Sopenharmony_ci            MmsAcknowledgeIndDecodeTest(decodeMsg);
173e5d0e473Sopenharmony_ci            break;
174e5d0e473Sopenharmony_ci        case MMS_MSGTYPE_DELIVERY_IND:
175e5d0e473Sopenharmony_ci            MmsDeliveryIndDecodeTest(decodeMsg);
176e5d0e473Sopenharmony_ci            break;
177e5d0e473Sopenharmony_ci        case MMS_MSGTYPE_READ_REC_IND:
178e5d0e473Sopenharmony_ci            MmsReadRecIndDecodeTest(decodeMsg);
179e5d0e473Sopenharmony_ci            break;
180e5d0e473Sopenharmony_ci        case MMS_MSGTYPE_READ_ORIG_IND:
181e5d0e473Sopenharmony_ci            MmsReadOrigIndDecodeTest(decodeMsg);
182e5d0e473Sopenharmony_ci            break;
183e5d0e473Sopenharmony_ci        default:
184e5d0e473Sopenharmony_ci            break;
185e5d0e473Sopenharmony_ci    }
186e5d0e473Sopenharmony_ci}
187e5d0e473Sopenharmony_ci
188e5d0e473Sopenharmony_civoid MmsMsgTest::GetSendReqDataTest(MmsMsg &encodeMsg)
189e5d0e473Sopenharmony_ci{
190e5d0e473Sopenharmony_ci    // Mandatory
191e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsMessageType(MMS_MSGTYPE_SEND_REQ)) {
192e5d0e473Sopenharmony_ci        std::cout << "SetMmsMessageType fail" << std::endl;
193e5d0e473Sopenharmony_ci        return;
194e5d0e473Sopenharmony_ci    }
195e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsTransactionId("2077.1427358451410")) {
196e5d0e473Sopenharmony_ci        std::cout << "SetMmsTransactionId fail" << std::endl;
197e5d0e473Sopenharmony_ci        return;
198e5d0e473Sopenharmony_ci    }
199e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsVersion(static_cast<uint16_t>(MmsVersionType::MMS_VERSION_1_2))) {
200e5d0e473Sopenharmony_ci        std::cout << "SetMmsVersion fail" << std::endl;
201e5d0e473Sopenharmony_ci        return;
202e5d0e473Sopenharmony_ci    }
203e5d0e473Sopenharmony_ci    MmsAddress address;
204e5d0e473Sopenharmony_ci    address.SetMmsAddressString("+8613812345678/TYPE=PLMN");
205e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsFrom(address)) {
206e5d0e473Sopenharmony_ci        std::cout << "SetMmsFrom fail" << std::endl;
207e5d0e473Sopenharmony_ci        return;
208e5d0e473Sopenharmony_ci    }
209e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderContentType("application/vnd.wap.multipart.related")) {
210e5d0e473Sopenharmony_ci        std::cout << "SetHeaderContentType fail" << std::endl;
211e5d0e473Sopenharmony_ci        return;
212e5d0e473Sopenharmony_ci    }
213e5d0e473Sopenharmony_ci    // Optional
214e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsSubject("Test mms")) {
215e5d0e473Sopenharmony_ci        std::cout << "SetMmsSubject fail" << std::endl;
216e5d0e473Sopenharmony_ci        return;
217e5d0e473Sopenharmony_ci    }
218e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderOctetValue(MMS_CONTENT_CLASS, static_cast<uint8_t>(MmsContentClass::MMS_TEXT))) {
219e5d0e473Sopenharmony_ci        std::cout << "SetHeaderOctetValue MMS_CONTENT_CLASS fail" << std::endl;
220e5d0e473Sopenharmony_ci        return;
221e5d0e473Sopenharmony_ci    }
222e5d0e473Sopenharmony_ci}
223e5d0e473Sopenharmony_ci
224e5d0e473Sopenharmony_civoid MmsMsgTest::MmsSendReqEncodeTest()
225e5d0e473Sopenharmony_ci{
226e5d0e473Sopenharmony_ci    std::cout << "Start MmsSendReqEncodeTest" << std::endl;
227e5d0e473Sopenharmony_ci    MmsMsg encodeMsg;
228e5d0e473Sopenharmony_ci    GetSendReqDataTest(encodeMsg);
229e5d0e473Sopenharmony_ci    std::vector<MmsAddress> vecAddrs;
230e5d0e473Sopenharmony_ci    MmsAddress toAddrs("+8613888888888/TYPE=PLMN");
231e5d0e473Sopenharmony_ci    vecAddrs.push_back(toAddrs);
232e5d0e473Sopenharmony_ci    MmsAddress toAddrs2("+8613812345678/TYPE=PLMN");
233e5d0e473Sopenharmony_ci    vecAddrs.push_back(toAddrs2);
234e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsTo(vecAddrs)) {
235e5d0e473Sopenharmony_ci        std::cout << "SetMmsTo fail" << std::endl;
236e5d0e473Sopenharmony_ci        return;
237e5d0e473Sopenharmony_ci    }
238e5d0e473Sopenharmony_ci    // add smil file
239e5d0e473Sopenharmony_ci    const std::string filePathNameSmil = "/data/app/enSrc/618C0A89.smil";
240e5d0e473Sopenharmony_ci    if (!MmsAddAttachment(encodeMsg, filePathNameSmil, "<0000>", "application/smil", true)) {
241e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment smil fail" << std::endl;
242e5d0e473Sopenharmony_ci        return;
243e5d0e473Sopenharmony_ci    }
244e5d0e473Sopenharmony_ci    // add text file
245e5d0e473Sopenharmony_ci    const std::string filePathNameText = "/data/app/enSrc/content.text";
246e5d0e473Sopenharmony_ci    if (!MmsAddAttachment(encodeMsg, filePathNameText, "<content.text>", "text/plain", false)) {
247e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment text fail" << std::endl;
248e5d0e473Sopenharmony_ci        return;
249e5d0e473Sopenharmony_ci    }
250e5d0e473Sopenharmony_ci    // add image file
251e5d0e473Sopenharmony_ci    const std::string filePathNameGif = "/data/app/enSrc/picture.gif";
252e5d0e473Sopenharmony_ci    if (!MmsAddAttachment(encodeMsg, filePathNameGif, "<picture.gif>", "image/gif", false)) {
253e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment gif fail" << std::endl;
254e5d0e473Sopenharmony_ci        return;
255e5d0e473Sopenharmony_ci    }
256e5d0e473Sopenharmony_ci    uint32_t len = 0;
257e5d0e473Sopenharmony_ci    std::unique_ptr<char[]> result = encodeMsg.EncodeMsg(len);
258e5d0e473Sopenharmony_ci    if (result == nullptr) {
259e5d0e473Sopenharmony_ci        std::cout << "encode fail result nullptr error." << std::endl;
260e5d0e473Sopenharmony_ci        return;
261e5d0e473Sopenharmony_ci    }
262e5d0e473Sopenharmony_ci    if (!WriteBufferToFile(std::move(result), len, "/data/app/deSrc/SendReq.mms")) {
263e5d0e473Sopenharmony_ci        std::cout << "Encode write to file error." << std::endl;
264e5d0e473Sopenharmony_ci        return;
265e5d0e473Sopenharmony_ci    }
266e5d0e473Sopenharmony_ci    std::cout << "MmsSendReqEncodeTest encode success, data len = " << len << std::endl;
267e5d0e473Sopenharmony_ci}
268e5d0e473Sopenharmony_ci
269e5d0e473Sopenharmony_civoid MmsMsgTest::MmsSendConfEncodeTest() const
270e5d0e473Sopenharmony_ci{
271e5d0e473Sopenharmony_ci    std::cout << "Start MmsSendConfEncodeTest" << std::endl;
272e5d0e473Sopenharmony_ci    MmsMsg encodeMsg;
273e5d0e473Sopenharmony_ci    // Mandatory
274e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsMessageType(MMS_MSGTYPE_SEND_CONF)) {
275e5d0e473Sopenharmony_ci        std::cout << "SetMmsMessageType fail" << std::endl;
276e5d0e473Sopenharmony_ci        return;
277e5d0e473Sopenharmony_ci    }
278e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsTransactionId("2077.1427358451410")) {
279e5d0e473Sopenharmony_ci        std::cout << "SetMmsTransactionId fail" << std::endl;
280e5d0e473Sopenharmony_ci        return;
281e5d0e473Sopenharmony_ci    }
282e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsVersion(static_cast<uint16_t>(MmsVersionType::MMS_VERSION_1_2))) {
283e5d0e473Sopenharmony_ci        std::cout << "SetMmsVersion fail" << std::endl;
284e5d0e473Sopenharmony_ci        return;
285e5d0e473Sopenharmony_ci    }
286e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderOctetValue(MMS_RESPONSE_STATUS, static_cast<uint8_t>(MmsResponseStatus::MMS_OK))) {
287e5d0e473Sopenharmony_ci        std::cout << "SetHeaderOctetValue MMS_RESPONSE_STATUS fail" << std::endl;
288e5d0e473Sopenharmony_ci        return;
289e5d0e473Sopenharmony_ci    }
290e5d0e473Sopenharmony_ci    uint32_t len = 0;
291e5d0e473Sopenharmony_ci    std::unique_ptr<char[]> result = encodeMsg.EncodeMsg(len);
292e5d0e473Sopenharmony_ci    if (result == nullptr) {
293e5d0e473Sopenharmony_ci        std::cout << "encode fail result nullptr error." << std::endl;
294e5d0e473Sopenharmony_ci        return;
295e5d0e473Sopenharmony_ci    }
296e5d0e473Sopenharmony_ci    if (!WriteBufferToFile(std::move(result), len, "/data/app/deSrc/SendConf.mms")) {
297e5d0e473Sopenharmony_ci        std::cout << "Encode write to file error." << std::endl;
298e5d0e473Sopenharmony_ci        return;
299e5d0e473Sopenharmony_ci    }
300e5d0e473Sopenharmony_ci    std::cout << "MmsSendConfEncodeTest encode success, data len =" << len << std::endl;
301e5d0e473Sopenharmony_ci}
302e5d0e473Sopenharmony_ci
303e5d0e473Sopenharmony_civoid MmsMsgTest::GetMmsNotificationIndDataTest(MmsMsg &encodeMsg)
304e5d0e473Sopenharmony_ci{
305e5d0e473Sopenharmony_ci    const long expiryTemp = 1637141707;
306e5d0e473Sopenharmony_ci    const long messageSize = 12345678;
307e5d0e473Sopenharmony_ci    // Mandatory
308e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsMessageType(MMS_MSGTYPE_NOTIFICATION_IND)) {
309e5d0e473Sopenharmony_ci        std::cout << "SetMmsMessageType fail" << std::endl;
310e5d0e473Sopenharmony_ci        return;
311e5d0e473Sopenharmony_ci    }
312e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsTransactionId("2077.1427358451410")) {
313e5d0e473Sopenharmony_ci        std::cout << "SetMmsTransactionId fail" << std::endl;
314e5d0e473Sopenharmony_ci        return;
315e5d0e473Sopenharmony_ci    }
316e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsVersion(static_cast<uint16_t>(MmsVersionType::MMS_VERSION_1_2))) {
317e5d0e473Sopenharmony_ci        std::cout << "SetMmsVersion fail" << std::endl;
318e5d0e473Sopenharmony_ci        return;
319e5d0e473Sopenharmony_ci    }
320e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderOctetValue(MMS_MESSAGE_CLASS, static_cast<uint8_t>(MmsMessageClass::PERSONAL))) {
321e5d0e473Sopenharmony_ci        std::cout << "SetHeaderOctetValue fail" << std::endl;
322e5d0e473Sopenharmony_ci        return;
323e5d0e473Sopenharmony_ci    }
324e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderLongValue(MMS_EXPIRY, expiryTemp)) {
325e5d0e473Sopenharmony_ci        std::cout << "SetHeaderLongValue MMS_EXPIRY fail" << std::endl;
326e5d0e473Sopenharmony_ci        return;
327e5d0e473Sopenharmony_ci    }
328e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderLongValue(MMS_MESSAGE_SIZE, messageSize)) {
329e5d0e473Sopenharmony_ci        std::cout << "SetHeaderLongValue MMS_MESSAGE_SIZE fail" << std::endl;
330e5d0e473Sopenharmony_ci        return;
331e5d0e473Sopenharmony_ci    }
332e5d0e473Sopenharmony_ci    std::string strContentLocation = "Test";
333e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderStringValue(MMS_CONTENT_LOCATION, strContentLocation)) {
334e5d0e473Sopenharmony_ci        std::cout << "SetHeaderStringValue fail" << std::endl;
335e5d0e473Sopenharmony_ci        return;
336e5d0e473Sopenharmony_ci    } // need to confirmation
337e5d0e473Sopenharmony_ci}
338e5d0e473Sopenharmony_ci
339e5d0e473Sopenharmony_civoid MmsMsgTest::MmsNotificationIndEncodeTest()
340e5d0e473Sopenharmony_ci{
341e5d0e473Sopenharmony_ci    std::cout << "Start MmsNotificationIndEncodeTest" << std::endl;
342e5d0e473Sopenharmony_ci    MmsMsg encodeMsg;
343e5d0e473Sopenharmony_ci    GetMmsNotificationIndDataTest(encodeMsg);
344e5d0e473Sopenharmony_ci    // Optional
345e5d0e473Sopenharmony_ci    MmsAddress address;
346e5d0e473Sopenharmony_ci    address.SetMmsAddressString("+8613812345678/TYPE=PLMN");
347e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsFrom(address)) {
348e5d0e473Sopenharmony_ci        std::cout << "SetMmsFrom fail" << std::endl;
349e5d0e473Sopenharmony_ci        return;
350e5d0e473Sopenharmony_ci    }
351e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsSubject("Test mms")) {
352e5d0e473Sopenharmony_ci        std::cout << "SetMmsSubject fail" << std::endl;
353e5d0e473Sopenharmony_ci        return;
354e5d0e473Sopenharmony_ci    }
355e5d0e473Sopenharmony_ci    uint32_t len = 0;
356e5d0e473Sopenharmony_ci    std::unique_ptr<char[]> result = encodeMsg.EncodeMsg(len);
357e5d0e473Sopenharmony_ci    if (result == nullptr) {
358e5d0e473Sopenharmony_ci        std::cout << "encode fail result nullptr error." << std::endl;
359e5d0e473Sopenharmony_ci        return;
360e5d0e473Sopenharmony_ci    }
361e5d0e473Sopenharmony_ci    if (!WriteBufferToFile(std::move(result), len, "/data/app/deSrc/NotificationInd.mms")) {
362e5d0e473Sopenharmony_ci        std::cout << "Encode write to file error." << std::endl;
363e5d0e473Sopenharmony_ci        return;
364e5d0e473Sopenharmony_ci    }
365e5d0e473Sopenharmony_ci    std::cout << "MmsNotificationIndEncodeTest encode success, data len =" << len << std::endl;
366e5d0e473Sopenharmony_ci}
367e5d0e473Sopenharmony_ci
368e5d0e473Sopenharmony_civoid MmsMsgTest::MmsNotifyRespIndEncodeTest() const
369e5d0e473Sopenharmony_ci{
370e5d0e473Sopenharmony_ci    std::cout << "Start MmsNotifyRespIndEncodeTest" << std::endl;
371e5d0e473Sopenharmony_ci    MmsMsg encodeMsg;
372e5d0e473Sopenharmony_ci    // Mandatory
373e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsMessageType(MMS_MSGTYPE_NOTIFYRESP_IND)) {
374e5d0e473Sopenharmony_ci        std::cout << "SetMmsMessageType fail" << std::endl;
375e5d0e473Sopenharmony_ci        return;
376e5d0e473Sopenharmony_ci    }
377e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsTransactionId("2077.1427358451410")) {
378e5d0e473Sopenharmony_ci        std::cout << "SetMmsTransactionId fail" << std::endl;
379e5d0e473Sopenharmony_ci        return;
380e5d0e473Sopenharmony_ci    }
381e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsVersion(static_cast<uint16_t>(MmsVersionType::MMS_VERSION_1_2))) {
382e5d0e473Sopenharmony_ci        std::cout << "SetMmsVersion fail" << std::endl;
383e5d0e473Sopenharmony_ci        return;
384e5d0e473Sopenharmony_ci    }
385e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderOctetValue(MMS_STATUS, static_cast<uint8_t>(MmsStatus::MMS_EXPIRED))) {
386e5d0e473Sopenharmony_ci        std::cout << "SetHeaderOctetValue MMS_STATUS fail" << std::endl;
387e5d0e473Sopenharmony_ci        return;
388e5d0e473Sopenharmony_ci    }
389e5d0e473Sopenharmony_ci    uint32_t len = 0;
390e5d0e473Sopenharmony_ci    std::unique_ptr<char[]> result = encodeMsg.EncodeMsg(len);
391e5d0e473Sopenharmony_ci    if (result == nullptr) {
392e5d0e473Sopenharmony_ci        std::cout << "encode fail result nullptr error." << std::endl;
393e5d0e473Sopenharmony_ci        return;
394e5d0e473Sopenharmony_ci    }
395e5d0e473Sopenharmony_ci    if (!WriteBufferToFile(std::move(result), len, "/data/app/deSrc/NotifyRespInd.mms")) {
396e5d0e473Sopenharmony_ci        std::cout << "Encode write to file error." << std::endl;
397e5d0e473Sopenharmony_ci        return;
398e5d0e473Sopenharmony_ci    }
399e5d0e473Sopenharmony_ci    std::cout << "MmsNotifyRespIndEncodeTest encode success, data len =" << len << std::endl;
400e5d0e473Sopenharmony_ci}
401e5d0e473Sopenharmony_ci
402e5d0e473Sopenharmony_civoid MmsMsgTest::MmsRetrieveConfDataTest(MmsMsg &encodeMsg)
403e5d0e473Sopenharmony_ci{
404e5d0e473Sopenharmony_ci    // Mandatory
405e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsMessageType(MMS_MSGTYPE_RETRIEVE_CONF)) {
406e5d0e473Sopenharmony_ci        std::cout << "SetMmsMessageType fail" << std::endl;
407e5d0e473Sopenharmony_ci        return;
408e5d0e473Sopenharmony_ci    }
409e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsTransactionId("2077.1427358451410")) {
410e5d0e473Sopenharmony_ci        std::cout << "SetMmsTransactionId fail" << std::endl;
411e5d0e473Sopenharmony_ci        return;
412e5d0e473Sopenharmony_ci    }
413e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsVersion(static_cast<uint16_t>(MmsVersionType::MMS_VERSION_1_2))) {
414e5d0e473Sopenharmony_ci        std::cout << "SetMmsVersion fail" << std::endl;
415e5d0e473Sopenharmony_ci        return;
416e5d0e473Sopenharmony_ci    }
417e5d0e473Sopenharmony_ci    const long dateTemp = 1637141707;
418e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsDate(dateTemp)) {
419e5d0e473Sopenharmony_ci        std::cout << "SetMmsDate fail" << std::endl;
420e5d0e473Sopenharmony_ci        return;
421e5d0e473Sopenharmony_ci    }
422e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderContentType("application/vnd.wap.multipart.related")) {
423e5d0e473Sopenharmony_ci        std::cout << "SetHeaderContentType fail" << std::endl;
424e5d0e473Sopenharmony_ci        return;
425e5d0e473Sopenharmony_ci    }
426e5d0e473Sopenharmony_ci    // Optional
427e5d0e473Sopenharmony_ci    MmsAddress address;
428e5d0e473Sopenharmony_ci    address.SetMmsAddressString("+8613812345678/TYPE=PLMN");
429e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsFrom(address)) {
430e5d0e473Sopenharmony_ci        std::cout << "SetMmsFrom fail" << std::endl;
431e5d0e473Sopenharmony_ci        return;
432e5d0e473Sopenharmony_ci    }
433e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsSubject("Test mms")) {
434e5d0e473Sopenharmony_ci        std::cout << "SetMmsSubject fail" << std::endl;
435e5d0e473Sopenharmony_ci        return;
436e5d0e473Sopenharmony_ci    }
437e5d0e473Sopenharmony_ci}
438e5d0e473Sopenharmony_ci
439e5d0e473Sopenharmony_civoid MmsMsgTest::MmsRetrieveConfEncodeTest()
440e5d0e473Sopenharmony_ci{
441e5d0e473Sopenharmony_ci    std::cout << "Start MmsRetrieveConfEncodeTest" << std::endl;
442e5d0e473Sopenharmony_ci    MmsMsg encodeMsg;
443e5d0e473Sopenharmony_ci    MmsRetrieveConfDataTest(encodeMsg);
444e5d0e473Sopenharmony_ci    // add smil file
445e5d0e473Sopenharmony_ci    const std::string filePathNameSmil = "/data/app/enSrc/618C0A89.smil";
446e5d0e473Sopenharmony_ci    if (!MmsAddAttachment(encodeMsg, filePathNameSmil, "<0000>", "application/smil", true)) {
447e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment smil fail" << std::endl;
448e5d0e473Sopenharmony_ci        return;
449e5d0e473Sopenharmony_ci    }
450e5d0e473Sopenharmony_ci    // add text file
451e5d0e473Sopenharmony_ci    const std::string filePathNameText = "/data/app/enSrc/content.text";
452e5d0e473Sopenharmony_ci    if (!MmsAddAttachment(encodeMsg, filePathNameText, "<content.text>", "text/plain", false)) {
453e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment text fail" << std::endl;
454e5d0e473Sopenharmony_ci        return;
455e5d0e473Sopenharmony_ci    }
456e5d0e473Sopenharmony_ci    // add image file
457e5d0e473Sopenharmony_ci    const std::string filePathNameGif("/data/app/enSrc/picture.gif");
458e5d0e473Sopenharmony_ci    if (!MmsAddAttachment(encodeMsg, filePathNameGif, "picture.gif", "image/gif", false)) {
459e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment gif fail" << std::endl;
460e5d0e473Sopenharmony_ci        return;
461e5d0e473Sopenharmony_ci    }
462e5d0e473Sopenharmony_ci    uint32_t len = 0;
463e5d0e473Sopenharmony_ci    std::unique_ptr<char[]> result = encodeMsg.EncodeMsg(len);
464e5d0e473Sopenharmony_ci    if (result == nullptr) {
465e5d0e473Sopenharmony_ci        std::cout << "encode fail result nullptr error." << std::endl;
466e5d0e473Sopenharmony_ci        return;
467e5d0e473Sopenharmony_ci    }
468e5d0e473Sopenharmony_ci    if (!WriteBufferToFile(std::move(result), len, "/data/app/deSrc/RetrieveConf.mms")) {
469e5d0e473Sopenharmony_ci        std::cout << "Encode write to file error." << std::endl;
470e5d0e473Sopenharmony_ci        return;
471e5d0e473Sopenharmony_ci    }
472e5d0e473Sopenharmony_ci    std::cout << "MmsRetrieveConfEncodeTest encode success, data len =" << len << std::endl;
473e5d0e473Sopenharmony_ci}
474e5d0e473Sopenharmony_ci
475e5d0e473Sopenharmony_civoid MmsMsgTest::MmsAcknowledgeIndEncodeTest() const
476e5d0e473Sopenharmony_ci{
477e5d0e473Sopenharmony_ci    std::cout << "Start MmsAcknowledgeIndEncodeTest" << std::endl;
478e5d0e473Sopenharmony_ci    MmsMsg encodeMsg;
479e5d0e473Sopenharmony_ci    // Mandatory
480e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsMessageType(MMS_MSGTYPE_ACKNOWLEDGE_IND)) {
481e5d0e473Sopenharmony_ci        std::cout << "SetMmsMessageType fail" << std::endl;
482e5d0e473Sopenharmony_ci        return;
483e5d0e473Sopenharmony_ci    }
484e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsTransactionId("2077.1427358451410")) {
485e5d0e473Sopenharmony_ci        std::cout << "SetMmsTransactionId fail" << std::endl;
486e5d0e473Sopenharmony_ci        return;
487e5d0e473Sopenharmony_ci    }
488e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsVersion(static_cast<uint16_t>(MmsVersionType::MMS_VERSION_1_2))) {
489e5d0e473Sopenharmony_ci        std::cout << "SetMmsVersion fail" << std::endl;
490e5d0e473Sopenharmony_ci        return;
491e5d0e473Sopenharmony_ci    }
492e5d0e473Sopenharmony_ci    uint32_t len = 0;
493e5d0e473Sopenharmony_ci    std::unique_ptr<char[]> result = encodeMsg.EncodeMsg(len);
494e5d0e473Sopenharmony_ci    if (result == nullptr) {
495e5d0e473Sopenharmony_ci        std::cout << "encode fail result nullptr error." << std::endl;
496e5d0e473Sopenharmony_ci        return;
497e5d0e473Sopenharmony_ci    }
498e5d0e473Sopenharmony_ci    if (!WriteBufferToFile(std::move(result), len, "/data/app/deSrc/AcknowledgeInd.mms")) {
499e5d0e473Sopenharmony_ci        std::cout << "Encode write to file error." << std::endl;
500e5d0e473Sopenharmony_ci        return;
501e5d0e473Sopenharmony_ci    }
502e5d0e473Sopenharmony_ci    std::cout << "MmsAcknowledgeIndEncodeTest encode success, data len =" << len << std::endl;
503e5d0e473Sopenharmony_ci}
504e5d0e473Sopenharmony_ci
505e5d0e473Sopenharmony_civoid MmsMsgTest::MmsDeliveryIndEncodeTest() const
506e5d0e473Sopenharmony_ci{
507e5d0e473Sopenharmony_ci    std::cout << "Start MmsDeliveryIndEncodeTest" << std::endl;
508e5d0e473Sopenharmony_ci    MmsMsg encodeMsg;
509e5d0e473Sopenharmony_ci    // Mandatory
510e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsMessageType(MMS_MSGTYPE_DELIVERY_IND)) {
511e5d0e473Sopenharmony_ci        std::cout << "SetMmsMessageType fail" << std::endl;
512e5d0e473Sopenharmony_ci        return;
513e5d0e473Sopenharmony_ci    }
514e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsTransactionId("2077.1427358451410")) {
515e5d0e473Sopenharmony_ci        std::cout << "SetMmsTransactionId fail" << std::endl;
516e5d0e473Sopenharmony_ci        return;
517e5d0e473Sopenharmony_ci    }
518e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsVersion(static_cast<uint16_t>(MmsVersionType::MMS_VERSION_1_2))) {
519e5d0e473Sopenharmony_ci        std::cout << "SetMmsVersion fail" << std::endl;
520e5d0e473Sopenharmony_ci        return;
521e5d0e473Sopenharmony_ci    }
522e5d0e473Sopenharmony_ci    std::string strMessageID = "0001";
523e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderStringValue(MMS_MESSAGE_ID, strMessageID)) {
524e5d0e473Sopenharmony_ci        std::cout << "SetHeaderStringValue fail" << std::endl;
525e5d0e473Sopenharmony_ci        return;
526e5d0e473Sopenharmony_ci    }
527e5d0e473Sopenharmony_ci    const long dateTemp = 1637141707;
528e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsDate(dateTemp)) {
529e5d0e473Sopenharmony_ci        std::cout << "SetMmsDate fail" << std::endl;
530e5d0e473Sopenharmony_ci        return;
531e5d0e473Sopenharmony_ci    }
532e5d0e473Sopenharmony_ci    std::vector<MmsAddress> vecAddrs;
533e5d0e473Sopenharmony_ci    MmsAddress toAddrs("+8613888888888/TYPE=PLMN");
534e5d0e473Sopenharmony_ci    vecAddrs.push_back(toAddrs);
535e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsTo(vecAddrs)) {
536e5d0e473Sopenharmony_ci        std::cout << "SetMmsTo fail" << std::endl;
537e5d0e473Sopenharmony_ci        return;
538e5d0e473Sopenharmony_ci    }
539e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderOctetValue(MMS_STATUS, static_cast<uint8_t>(MmsStatus::MMS_EXPIRED))) {
540e5d0e473Sopenharmony_ci        std::cout << "SetHeaderOctetValue MMS_STATUS fail" << std::endl;
541e5d0e473Sopenharmony_ci        return;
542e5d0e473Sopenharmony_ci    }
543e5d0e473Sopenharmony_ci    uint32_t len = 0;
544e5d0e473Sopenharmony_ci    std::unique_ptr<char[]> result = encodeMsg.EncodeMsg(len);
545e5d0e473Sopenharmony_ci    if (result == nullptr) {
546e5d0e473Sopenharmony_ci        std::cout << "encode fail result nullptr error." << std::endl;
547e5d0e473Sopenharmony_ci        return;
548e5d0e473Sopenharmony_ci    }
549e5d0e473Sopenharmony_ci    if (!WriteBufferToFile(std::move(result), len, "/data/app/deSrc/DeliveryInd.mms")) {
550e5d0e473Sopenharmony_ci        std::cout << "Encode write to file error." << std::endl;
551e5d0e473Sopenharmony_ci        return;
552e5d0e473Sopenharmony_ci    }
553e5d0e473Sopenharmony_ci    std::cout << "MmsDeliveryIndEncodeTest encode success, data len =" << len << std::endl;
554e5d0e473Sopenharmony_ci}
555e5d0e473Sopenharmony_ci
556e5d0e473Sopenharmony_civoid MmsMsgTest::MmsReadRecIndEncodeTest() const
557e5d0e473Sopenharmony_ci{
558e5d0e473Sopenharmony_ci    std::cout << "Start MmsReadRecIndEncodeTest" << std::endl;
559e5d0e473Sopenharmony_ci    MmsMsg encodeMsg;
560e5d0e473Sopenharmony_ci    // Mandatory
561e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsMessageType(MMS_MSGTYPE_READ_REC_IND)) {
562e5d0e473Sopenharmony_ci        std::cout << "SetMmsMessageType fail" << std::endl;
563e5d0e473Sopenharmony_ci        return;
564e5d0e473Sopenharmony_ci    }
565e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsVersion(static_cast<uint16_t>(MmsVersionType::MMS_VERSION_1_2))) {
566e5d0e473Sopenharmony_ci        std::cout << "SetMmsVersion fail" << std::endl;
567e5d0e473Sopenharmony_ci        return;
568e5d0e473Sopenharmony_ci    }
569e5d0e473Sopenharmony_ci    std::string strMessageID = "0001";
570e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderStringValue(MMS_MESSAGE_ID, strMessageID)) {
571e5d0e473Sopenharmony_ci        std::cout << "SetHeaderStringValue fail" << std::endl;
572e5d0e473Sopenharmony_ci        return;
573e5d0e473Sopenharmony_ci    }
574e5d0e473Sopenharmony_ci    std::vector<MmsAddress> vecAddrs;
575e5d0e473Sopenharmony_ci    MmsAddress toAddrs("+8613888888888/TYPE=PLMN");
576e5d0e473Sopenharmony_ci    vecAddrs.push_back(toAddrs);
577e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsTo(vecAddrs)) {
578e5d0e473Sopenharmony_ci        std::cout << "SetMmsTo fail" << std::endl;
579e5d0e473Sopenharmony_ci        return;
580e5d0e473Sopenharmony_ci    }
581e5d0e473Sopenharmony_ci    MmsAddress address;
582e5d0e473Sopenharmony_ci    address.SetMmsAddressString("+8613812345678/TYPE=PLMN");
583e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsFrom(address)) {
584e5d0e473Sopenharmony_ci        std::cout << "SetMmsFrom fail" << std::endl;
585e5d0e473Sopenharmony_ci        return;
586e5d0e473Sopenharmony_ci    }
587e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderOctetValue(MMS_READ_STATUS, static_cast<uint8_t>(MmsReadStatus::MMS_READ))) {
588e5d0e473Sopenharmony_ci        std::cout << "SetHeaderOctetValue MMS_READ_STATUS fail" << std::endl;
589e5d0e473Sopenharmony_ci        return;
590e5d0e473Sopenharmony_ci    }
591e5d0e473Sopenharmony_ci    // Optional
592e5d0e473Sopenharmony_ci    const long dateTemp = 1637141707;
593e5d0e473Sopenharmony_ci    encodeMsg.SetMmsDate(dateTemp);
594e5d0e473Sopenharmony_ci    uint32_t len = 0;
595e5d0e473Sopenharmony_ci    std::unique_ptr<char[]> result = encodeMsg.EncodeMsg(len);
596e5d0e473Sopenharmony_ci    if (result == nullptr) {
597e5d0e473Sopenharmony_ci        std::cout << "encode fail result nullptr error." << std::endl;
598e5d0e473Sopenharmony_ci        return;
599e5d0e473Sopenharmony_ci    }
600e5d0e473Sopenharmony_ci    if (!WriteBufferToFile(std::move(result), len, "/data/app/deSrc/ReadRecInd.mms")) {
601e5d0e473Sopenharmony_ci        std::cout << "Encode write to file error." << std::endl;
602e5d0e473Sopenharmony_ci        return;
603e5d0e473Sopenharmony_ci    }
604e5d0e473Sopenharmony_ci    std::cout << "MmsReadRecIndEncodeTest encode success data len =" << len << std::endl;
605e5d0e473Sopenharmony_ci}
606e5d0e473Sopenharmony_ci
607e5d0e473Sopenharmony_civoid MmsMsgTest::MmsReadOrigIndEncodeTest() const
608e5d0e473Sopenharmony_ci{
609e5d0e473Sopenharmony_ci    std::cout << "Start MmsReadOrigIndEncodeTest" << std::endl;
610e5d0e473Sopenharmony_ci    MmsMsg encodeMsg;
611e5d0e473Sopenharmony_ci    // Mandatory
612e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsMessageType(MMS_MSGTYPE_READ_ORIG_IND)) {
613e5d0e473Sopenharmony_ci        std::cout << "SetMmsMessageType fail" << std::endl;
614e5d0e473Sopenharmony_ci        return;
615e5d0e473Sopenharmony_ci    }
616e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsVersion(static_cast<uint16_t>(MmsVersionType::MMS_VERSION_1_2))) {
617e5d0e473Sopenharmony_ci        std::cout << "SetMmsVersion fail" << std::endl;
618e5d0e473Sopenharmony_ci        return;
619e5d0e473Sopenharmony_ci    }
620e5d0e473Sopenharmony_ci    std::string strMessageID = "0001";
621e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderStringValue(MMS_MESSAGE_ID, strMessageID)) {
622e5d0e473Sopenharmony_ci        std::cout << "SetHeaderStringValue fail" << std::endl;
623e5d0e473Sopenharmony_ci        return;
624e5d0e473Sopenharmony_ci    }
625e5d0e473Sopenharmony_ci    std::vector<MmsAddress> vecAddrs;
626e5d0e473Sopenharmony_ci    MmsAddress toAddrs("+8613888888888/TYPE=PLMN");
627e5d0e473Sopenharmony_ci    vecAddrs.push_back(toAddrs);
628e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsTo(vecAddrs)) {
629e5d0e473Sopenharmony_ci        std::cout << "SetMmsTo fail" << std::endl;
630e5d0e473Sopenharmony_ci        return;
631e5d0e473Sopenharmony_ci    }
632e5d0e473Sopenharmony_ci    MmsAddress address;
633e5d0e473Sopenharmony_ci    address.SetMmsAddressString("+8613812345678/TYPE=PLMN");
634e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsFrom(address)) {
635e5d0e473Sopenharmony_ci        std::cout << "SetMmsFrom fail" << std::endl;
636e5d0e473Sopenharmony_ci        return;
637e5d0e473Sopenharmony_ci    }
638e5d0e473Sopenharmony_ci    const long dateTemp = 1637141707;
639e5d0e473Sopenharmony_ci    if (!encodeMsg.SetMmsDate(dateTemp)) {
640e5d0e473Sopenharmony_ci        std::cout << "SetMmsDate fail" << std::endl;
641e5d0e473Sopenharmony_ci        return;
642e5d0e473Sopenharmony_ci    }
643e5d0e473Sopenharmony_ci    if (!encodeMsg.SetHeaderOctetValue(MMS_READ_STATUS, static_cast<uint8_t>(MmsReadStatus::MMS_READ))) {
644e5d0e473Sopenharmony_ci        std::cout << "SetHeaderOctetValue MMS_READ_STATUS fail" << std::endl;
645e5d0e473Sopenharmony_ci        return;
646e5d0e473Sopenharmony_ci    }
647e5d0e473Sopenharmony_ci    // Optional
648e5d0e473Sopenharmony_ci    uint32_t len = 0;
649e5d0e473Sopenharmony_ci    std::unique_ptr<char[]> result = encodeMsg.EncodeMsg(len);
650e5d0e473Sopenharmony_ci    if (result == nullptr) {
651e5d0e473Sopenharmony_ci        std::cout << "encode fail result nullptr error." << std::endl;
652e5d0e473Sopenharmony_ci        return;
653e5d0e473Sopenharmony_ci    }
654e5d0e473Sopenharmony_ci    if (!WriteBufferToFile(std::move(result), len, "/data/app/deSrc/ReadOrigInd.mms")) {
655e5d0e473Sopenharmony_ci        std::cout << "Encode write to file error." << std::endl;
656e5d0e473Sopenharmony_ci        return;
657e5d0e473Sopenharmony_ci    }
658e5d0e473Sopenharmony_ci    std::cout << "MmsReadOrigIndEncodeTest encode success, data len =" << len << std::endl;
659e5d0e473Sopenharmony_ci}
660e5d0e473Sopenharmony_ci
661e5d0e473Sopenharmony_cibool MmsMsgTest::MmsAddAttachment(
662e5d0e473Sopenharmony_ci    MmsMsg &msg, std::string pathName, std::string contentId, std::string contenType, bool isSmil) const
663e5d0e473Sopenharmony_ci{
664e5d0e473Sopenharmony_ci    MmsAttachment imageAttachment;
665e5d0e473Sopenharmony_ci    std::size_t pos = pathName.find_last_of('/');
666e5d0e473Sopenharmony_ci    std::string fileName(pathName.substr(pos + 1));
667e5d0e473Sopenharmony_ci
668e5d0e473Sopenharmony_ci    if (!imageAttachment.SetAttachmentFilePath(pathName, isSmil)) {
669e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment SetAttachmentFilePath fail" << std::endl;
670e5d0e473Sopenharmony_ci        return false;
671e5d0e473Sopenharmony_ci    }
672e5d0e473Sopenharmony_ci    if (!imageAttachment.SetFileName(fileName)) {
673e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment SetFileName fail" << std::endl;
674e5d0e473Sopenharmony_ci        return false;
675e5d0e473Sopenharmony_ci    }
676e5d0e473Sopenharmony_ci    if (!imageAttachment.SetContentId(contentId)) {
677e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment SetContentId fail" << std::endl;
678e5d0e473Sopenharmony_ci        return false;
679e5d0e473Sopenharmony_ci    }
680e5d0e473Sopenharmony_ci    if (!imageAttachment.SetContentLocation(fileName)) {
681e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment SetContentLocation fail" << std::endl;
682e5d0e473Sopenharmony_ci        return false;
683e5d0e473Sopenharmony_ci    }
684e5d0e473Sopenharmony_ci    if (!imageAttachment.SetContentType(contenType)) {
685e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment SetContentType fail" << std::endl;
686e5d0e473Sopenharmony_ci        return false;
687e5d0e473Sopenharmony_ci    }
688e5d0e473Sopenharmony_ci    imageAttachment.SetContentDisposition("attachment");
689e5d0e473Sopenharmony_ci    if (!msg.AddAttachment(imageAttachment)) {
690e5d0e473Sopenharmony_ci        std::cout << "MmsAddAttachment AddAttachment fail" << std::endl;
691e5d0e473Sopenharmony_ci        return false;
692e5d0e473Sopenharmony_ci    }
693e5d0e473Sopenharmony_ci    return true;
694e5d0e473Sopenharmony_ci}
695e5d0e473Sopenharmony_ci
696e5d0e473Sopenharmony_civoid MmsMsgTest::MmsSendReqDecodeTest(MmsMsg &decodeMsg) const
697e5d0e473Sopenharmony_ci{
698e5d0e473Sopenharmony_ci    std::cout << "======= Start SendReqDecodeTest ===========" << std::endl;
699e5d0e473Sopenharmony_ci    // Mandatory
700e5d0e473Sopenharmony_ci    std::cout << "TransactionId: " << decodeMsg.GetMmsTransactionId() << std::endl;
701e5d0e473Sopenharmony_ci    std::cout << "Version: " << decodeMsg.GetMmsVersion() << std::endl;
702e5d0e473Sopenharmony_ci    std::cout << "Date: " << decodeMsg.GetMmsDate() << std::endl;
703e5d0e473Sopenharmony_ci    std::cout << "From: " << decodeMsg.GetMmsFrom().GetAddressString() << std::endl;
704e5d0e473Sopenharmony_ci    std::vector<MmsAddress> toAddress;
705e5d0e473Sopenharmony_ci    decodeMsg.GetMmsTo(toAddress);
706e5d0e473Sopenharmony_ci    for (auto itTo : toAddress) {
707e5d0e473Sopenharmony_ci        std::cout << "To: " << itTo.GetAddressString() << std::endl;
708e5d0e473Sopenharmony_ci    }
709e5d0e473Sopenharmony_ci    std::string deliverReport = std::to_string(decodeMsg.GetHeaderOctetValue(MMS_DELIVERY_REPORT));
710e5d0e473Sopenharmony_ci    std::string sendVisbility = std::to_string(decodeMsg.GetHeaderOctetValue(MMS_SENDER_VISIBILITY));
711e5d0e473Sopenharmony_ci    std::string readResport = std::to_string(decodeMsg.GetHeaderOctetValue(MMS_READ_REPORT));
712e5d0e473Sopenharmony_ci    std::string messageClass = std::to_string(decodeMsg.GetHeaderOctetValue(MMS_MESSAGE_CLASS));
713e5d0e473Sopenharmony_ci    std::string priority = std::to_string(decodeMsg.GetHeaderOctetValue(MMS_PRIORITY));
714e5d0e473Sopenharmony_ci
715e5d0e473Sopenharmony_ci    std::cout << "Subject: " << decodeMsg.GetMmsSubject() << std::endl;
716e5d0e473Sopenharmony_ci    std::cout << "DeliveryReport: " << deliverReport << std::endl;
717e5d0e473Sopenharmony_ci    std::cout << "SenderVisibility: " << sendVisbility << std::endl;
718e5d0e473Sopenharmony_ci    std::cout << "ReadReport: " << readResport << std::endl;
719e5d0e473Sopenharmony_ci    std::cout << "MessageClass: " << messageClass << std::endl;
720e5d0e473Sopenharmony_ci    std::cout << "Prioity: " << priority << std::endl;
721e5d0e473Sopenharmony_ci
722e5d0e473Sopenharmony_ci    std::vector<MmsAttachment> attachments;
723e5d0e473Sopenharmony_ci    decodeMsg.GetAllAttachment(attachments);
724e5d0e473Sopenharmony_ci    int attachmentCnt = 0;
725e5d0e473Sopenharmony_ci    for (auto it : attachments) {
726e5d0e473Sopenharmony_ci        std::cout << "=======part:" << attachmentCnt << " attachments infos ======" << std::endl;
727e5d0e473Sopenharmony_ci        std::cout << "ContentDisposition: " << it.GetContentDisposition() << std::endl;
728e5d0e473Sopenharmony_ci        std::cout << "ContentLocation: " << it.GetContentLocation() << std::endl;
729e5d0e473Sopenharmony_ci        std::cout << "ContentId: " << it.GetContentId() << std::endl;
730e5d0e473Sopenharmony_ci        std::cout << "FileName: " << it.GetFileName() << std::endl;
731e5d0e473Sopenharmony_ci        uint32_t len = 0;
732e5d0e473Sopenharmony_ci        std::unique_ptr<char[]> buff = it.GetDataBuffer(len);
733e5d0e473Sopenharmony_ci        if (buff != nullptr) {
734e5d0e473Sopenharmony_ci            std::cout << "attachments buffer size = " << len << std::endl;
735e5d0e473Sopenharmony_ci        }
736e5d0e473Sopenharmony_ci        std::cout << "=======part:" << attachmentCnt << " attachments infos ======" << std::endl;
737e5d0e473Sopenharmony_ci        attachmentCnt++;
738e5d0e473Sopenharmony_ci    }
739e5d0e473Sopenharmony_ci    std::cout << "======= End SendReqDecodeTest ===========" << std::endl;
740e5d0e473Sopenharmony_ci}
741e5d0e473Sopenharmony_ci
742e5d0e473Sopenharmony_civoid MmsMsgTest::MmsSendConfDecodeTest(MmsMsg &decodeMsg) const
743e5d0e473Sopenharmony_ci{
744e5d0e473Sopenharmony_ci    std::cout << "======== Start SendConfEncodeTest =============" << std::endl;
745e5d0e473Sopenharmony_ci    // Mandatory
746e5d0e473Sopenharmony_ci    std::cout << "TransactionId: " << decodeMsg.GetMmsTransactionId() << std::endl;
747e5d0e473Sopenharmony_ci    std::cout << "Version: " << decodeMsg.GetMmsVersion() << std::endl;
748e5d0e473Sopenharmony_ci    std::string responseStatus = std::to_string(decodeMsg.GetHeaderOctetValue(MMS_RESPONSE_STATUS));
749e5d0e473Sopenharmony_ci    std::cout << "ResponseStatus: " << responseStatus << std::endl;
750e5d0e473Sopenharmony_ci    std::cout << "======== End SendConfEncodeTest =============" << std::endl;
751e5d0e473Sopenharmony_ci}
752e5d0e473Sopenharmony_ci
753e5d0e473Sopenharmony_civoid MmsMsgTest::MmsNotificationIndDecodeTest(MmsMsg &decodeMsg) const
754e5d0e473Sopenharmony_ci{
755e5d0e473Sopenharmony_ci    std::cout << "========== Start NotificationIndDecodeTest ========" << std::endl;
756e5d0e473Sopenharmony_ci    // Mandatory
757e5d0e473Sopenharmony_ci    std::cout << "TransactionId: " << decodeMsg.GetMmsTransactionId() << std::endl;
758e5d0e473Sopenharmony_ci    std::cout << "Version: " << decodeMsg.GetMmsVersion() << std::endl;
759e5d0e473Sopenharmony_ci    std::cout << "MessageSize: " << decodeMsg.GetHeaderLongValue(MMS_MESSAGE_SIZE) << std::endl;
760e5d0e473Sopenharmony_ci    std::cout << "Expiry: " << decodeMsg.GetHeaderLongValue(MMS_EXPIRY) << std::endl;
761e5d0e473Sopenharmony_ci    std::cout << "ContentLocation: " << decodeMsg.GetHeaderStringValue(MMS_CONTENT_LOCATION) << std::endl;
762e5d0e473Sopenharmony_ci    std::cout << "========== End NotificationIndDecodeTest ========" << std::endl;
763e5d0e473Sopenharmony_ci}
764e5d0e473Sopenharmony_ci
765e5d0e473Sopenharmony_civoid MmsMsgTest::MmsNotifyRespIndDecodeTest(MmsMsg &decodeMsg) const
766e5d0e473Sopenharmony_ci{
767e5d0e473Sopenharmony_ci    std::cout << "========= Start NotifyRespIndDecodeTest ======" << std::endl;
768e5d0e473Sopenharmony_ci    // Mandatory
769e5d0e473Sopenharmony_ci    std::cout << "TransactionId: " << decodeMsg.GetMmsTransactionId() << std::endl;
770e5d0e473Sopenharmony_ci    std::cout << "Version: " << decodeMsg.GetMmsVersion() << std::endl;
771e5d0e473Sopenharmony_ci    std::string status = std::to_string(decodeMsg.GetHeaderOctetValue(MMS_STATUS));
772e5d0e473Sopenharmony_ci    std::cout << "Status: " << status << std::endl;
773e5d0e473Sopenharmony_ci    std::cout << "========= End NotifyRespIndDecodeTest ======" << std::endl;
774e5d0e473Sopenharmony_ci}
775e5d0e473Sopenharmony_ci
776e5d0e473Sopenharmony_civoid MmsMsgTest::MmsRetrieveConfDecodeTest(MmsMsg &decodeMsg) const
777e5d0e473Sopenharmony_ci{
778e5d0e473Sopenharmony_ci    std::cout << "======== Start RetrieveConfDecodeTest =========" << std::endl;
779e5d0e473Sopenharmony_ci    // Mandatory
780e5d0e473Sopenharmony_ci    std::cout << "TransactionId: " << decodeMsg.GetMmsTransactionId() << std::endl;
781e5d0e473Sopenharmony_ci    std::cout << "Version: " << decodeMsg.GetMmsVersion() << std::endl;
782e5d0e473Sopenharmony_ci    std::cout << "Date: " << decodeMsg.GetMmsDate() << std::endl;
783e5d0e473Sopenharmony_ci
784e5d0e473Sopenharmony_ci    std::vector<MmsAttachment> attachments;
785e5d0e473Sopenharmony_ci    decodeMsg.GetAllAttachment(attachments);
786e5d0e473Sopenharmony_ci    int attachmentCnt = 0;
787e5d0e473Sopenharmony_ci    for (auto it : attachments) {
788e5d0e473Sopenharmony_ci        std::cout << "======= part:" << attachmentCnt << " attachments infos ======" << std::endl;
789e5d0e473Sopenharmony_ci        std::cout << "ContentDisposition: " << it.GetContentDisposition() << std::endl;
790e5d0e473Sopenharmony_ci        std::cout << "ContentLocation: " << it.GetContentLocation() << std::endl;
791e5d0e473Sopenharmony_ci        std::cout << "ContentId: " << it.GetContentId() << std::endl;
792e5d0e473Sopenharmony_ci        std::cout << "FileName: " << it.GetFileName() << std::endl;
793e5d0e473Sopenharmony_ci        uint32_t len = 0;
794e5d0e473Sopenharmony_ci        std::unique_ptr<char[]> buff = it.GetDataBuffer(len);
795e5d0e473Sopenharmony_ci        if (buff != nullptr) {
796e5d0e473Sopenharmony_ci            std::cout << "attachments buffer size = " << len << std::endl;
797e5d0e473Sopenharmony_ci        }
798e5d0e473Sopenharmony_ci
799e5d0e473Sopenharmony_ci        std::string strPathName = "/data/app/enSrc/";
800e5d0e473Sopenharmony_ci        strPathName.append(it.GetFileName());
801e5d0e473Sopenharmony_ci        std::cout << "======= strPathName:" << strPathName << std::endl;
802e5d0e473Sopenharmony_ci        if (!WriteBufferToFile(std::move(buff), len, strPathName)) {
803e5d0e473Sopenharmony_ci            std::cout << "Encode write to file error." << std::endl;
804e5d0e473Sopenharmony_ci            return;
805e5d0e473Sopenharmony_ci        }
806e5d0e473Sopenharmony_ci
807e5d0e473Sopenharmony_ci        std::cout << "======= part:" << attachmentCnt << " attachments infos ======" << std::endl;
808e5d0e473Sopenharmony_ci        attachmentCnt++;
809e5d0e473Sopenharmony_ci    }
810e5d0e473Sopenharmony_ci    std::cout << "======== End RetrieveConfDecodeTest =========" << std::endl;
811e5d0e473Sopenharmony_ci}
812e5d0e473Sopenharmony_ci
813e5d0e473Sopenharmony_civoid MmsMsgTest::MmsAcknowledgeIndDecodeTest(MmsMsg &decodeMsg) const
814e5d0e473Sopenharmony_ci{
815e5d0e473Sopenharmony_ci    std::cout << "======= Start AcknowledgeIndDecodeTest ========" << std::endl;
816e5d0e473Sopenharmony_ci    // Mandatory
817e5d0e473Sopenharmony_ci    std::cout << "TransactionId: " << decodeMsg.GetMmsTransactionId() << std::endl;
818e5d0e473Sopenharmony_ci    std::cout << "Version: " << decodeMsg.GetMmsVersion() << std::endl;
819e5d0e473Sopenharmony_ci    std::cout << "======= End AcknowledgeIndDecodeTest ========" << std::endl;
820e5d0e473Sopenharmony_ci}
821e5d0e473Sopenharmony_ci
822e5d0e473Sopenharmony_civoid MmsMsgTest::MmsDeliveryIndDecodeTest(MmsMsg &decodeMsg) const
823e5d0e473Sopenharmony_ci{
824e5d0e473Sopenharmony_ci    std::cout << "======== Start DeliveryIndDecodeTest ==========" << std::endl;
825e5d0e473Sopenharmony_ci    // Mandatory
826e5d0e473Sopenharmony_ci    std::cout << "Version: " << decodeMsg.GetMmsVersion() << std::endl;
827e5d0e473Sopenharmony_ci    std::cout << "MessageID: " << decodeMsg.GetHeaderStringValue(MMS_MESSAGE_ID) << std::endl;
828e5d0e473Sopenharmony_ci    std::vector<MmsAddress> toAddress;
829e5d0e473Sopenharmony_ci    decodeMsg.GetMmsTo(toAddress);
830e5d0e473Sopenharmony_ci    for (auto itTo : toAddress) {
831e5d0e473Sopenharmony_ci        std::cout << "To: " << itTo.GetAddressString() << std::endl;
832e5d0e473Sopenharmony_ci    }
833e5d0e473Sopenharmony_ci    std::cout << "Date: " << decodeMsg.GetMmsDate() << std::endl;
834e5d0e473Sopenharmony_ci    std::string status = std::to_string(decodeMsg.GetHeaderOctetValue(MMS_STATUS));
835e5d0e473Sopenharmony_ci    std::cout << "Status: " << status << std::endl;
836e5d0e473Sopenharmony_ci    std::cout << "======== End DeliveryIndDecodeTest ==========" << std::endl;
837e5d0e473Sopenharmony_ci}
838e5d0e473Sopenharmony_ci
839e5d0e473Sopenharmony_civoid MmsMsgTest::MmsReadRecIndDecodeTest(MmsMsg &decodeMsg) const
840e5d0e473Sopenharmony_ci{
841e5d0e473Sopenharmony_ci    std::cout << "======= Start ReadRecIndDecodeTest =========" << std::endl;
842e5d0e473Sopenharmony_ci    // Mandatory
843e5d0e473Sopenharmony_ci    std::cout << "Version: " << decodeMsg.GetMmsVersion() << std::endl;
844e5d0e473Sopenharmony_ci    std::cout << "MessageID: " << decodeMsg.GetHeaderStringValue(MMS_MESSAGE_ID) << std::endl;
845e5d0e473Sopenharmony_ci    std::vector<MmsAddress> toAddress;
846e5d0e473Sopenharmony_ci    decodeMsg.GetMmsTo(toAddress);
847e5d0e473Sopenharmony_ci    for (auto itTo : toAddress) {
848e5d0e473Sopenharmony_ci        std::cout << "To: " << itTo.GetAddressString() << std::endl;
849e5d0e473Sopenharmony_ci    }
850e5d0e473Sopenharmony_ci    MmsAddress fromAddress = decodeMsg.GetMmsFrom();
851e5d0e473Sopenharmony_ci    std::cout << "From: " << fromAddress.GetAddressString() << std::endl;
852e5d0e473Sopenharmony_ci    std::cout << "Date: " << decodeMsg.GetMmsDate() << std::endl;
853e5d0e473Sopenharmony_ci    std::string status = std::to_string(decodeMsg.GetHeaderOctetValue(MMS_STATUS));
854e5d0e473Sopenharmony_ci    std::cout << "Status: " << status << std::endl;
855e5d0e473Sopenharmony_ci    std::cout << "======= End ReadRecIndDecodeTest =========" << std::endl;
856e5d0e473Sopenharmony_ci}
857e5d0e473Sopenharmony_ci
858e5d0e473Sopenharmony_civoid MmsMsgTest::MmsReadOrigIndDecodeTest(MmsMsg &decodeMsg) const
859e5d0e473Sopenharmony_ci{
860e5d0e473Sopenharmony_ci    std::cout << "======== Start MmsReadOrigIndDecodeTest ========" << std::endl;
861e5d0e473Sopenharmony_ci    // Mandatory
862e5d0e473Sopenharmony_ci    std::cout << "Version: " << decodeMsg.GetMmsVersion() << std::endl;
863e5d0e473Sopenharmony_ci    std::cout << "MessageID: " << decodeMsg.GetHeaderStringValue(MMS_MESSAGE_ID) << std::endl;
864e5d0e473Sopenharmony_ci    std::vector<MmsAddress> toAddress;
865e5d0e473Sopenharmony_ci    decodeMsg.GetMmsTo(toAddress);
866e5d0e473Sopenharmony_ci    for (auto itTo : toAddress) {
867e5d0e473Sopenharmony_ci        std::cout << "To: " << itTo.GetAddressString() << std::endl;
868e5d0e473Sopenharmony_ci    }
869e5d0e473Sopenharmony_ci    MmsAddress fromAddress = decodeMsg.GetMmsFrom();
870e5d0e473Sopenharmony_ci    std::cout << "From: " << fromAddress.GetAddressString() << std::endl;
871e5d0e473Sopenharmony_ci    std::cout << "Date: " << decodeMsg.GetMmsDate() << std::endl;
872e5d0e473Sopenharmony_ci    std::string readStatus = std::to_string(decodeMsg.GetHeaderOctetValue(MMS_READ_STATUS));
873e5d0e473Sopenharmony_ci    std::cout << "ReadStatus: " << readStatus << std::endl;
874e5d0e473Sopenharmony_ci    std::cout << "======== End MmsReadOrigIndDecodeTest ========" << std::endl;
875e5d0e473Sopenharmony_ci}
876e5d0e473Sopenharmony_ci
877e5d0e473Sopenharmony_cistd::string MmsMsgTest::BuffToHex(const std::unique_ptr<char[]> &buff, uint32_t len) const
878e5d0e473Sopenharmony_ci{
879e5d0e473Sopenharmony_ci    std::stringstream ss;
880e5d0e473Sopenharmony_ci    for (std::size_t i = 0; i < len; ++i) {
881e5d0e473Sopenharmony_ci        unsigned char temp = static_cast<unsigned char>(buff[i]) >> HEX_OFFSET;
882e5d0e473Sopenharmony_ci        ss << "0x" << HEX_TABLE[temp] << HEX_TABLE[buff[i] & 0xf] << " ";
883e5d0e473Sopenharmony_ci        if ((i % MAX_LINE_NUM == 0) && (i != 0)) {
884e5d0e473Sopenharmony_ci            ss << "\r\n";
885e5d0e473Sopenharmony_ci        }
886e5d0e473Sopenharmony_ci    }
887e5d0e473Sopenharmony_ci    return ss.str();
888e5d0e473Sopenharmony_ci}
889e5d0e473Sopenharmony_ci
890e5d0e473Sopenharmony_cibool MmsMsgTest::WriteBufferToFile(
891e5d0e473Sopenharmony_ci    const std::unique_ptr<char[]> &buff, uint32_t len, const std::string &strPathName) const
892e5d0e473Sopenharmony_ci{
893e5d0e473Sopenharmony_ci    FILE *pFile = nullptr;
894e5d0e473Sopenharmony_ci    pFile = fopen(strPathName.c_str(), "wb");
895e5d0e473Sopenharmony_ci    if (!pFile || buff == nullptr) {
896e5d0e473Sopenharmony_ci        std::cout << "open file: " << strPathName << "fail!" << std::endl;
897e5d0e473Sopenharmony_ci        return false;
898e5d0e473Sopenharmony_ci    }
899e5d0e473Sopenharmony_ci    uint32_t fileLen = fwrite(buff.get(), len, 1, pFile);
900e5d0e473Sopenharmony_ci    if (fileLen > 0) {
901e5d0e473Sopenharmony_ci        std::cout << "write mms buffer to file success name:" << strPathName << std::endl;
902e5d0e473Sopenharmony_ci    } else {
903e5d0e473Sopenharmony_ci        std::cout << "write mms buffer to file error name:" << strPathName << std::endl;
904e5d0e473Sopenharmony_ci    }
905e5d0e473Sopenharmony_ci    (void)fclose(pFile);
906e5d0e473Sopenharmony_ci    return true;
907e5d0e473Sopenharmony_ci}
908e5d0e473Sopenharmony_ci} // namespace Telephony
909e5d0e473Sopenharmony_ci} // namespace OHOS
910