1 /*
2  * Copyright (C) 2023 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 #include "sms_gsm_message_test.h"
17 
18 #include <iostream>
19 
20 #include "access_mms_token.h"
21 #include "cdma_sms_message.h"
22 #include "gsm_cb_codec.h"
23 
24 namespace OHOS {
25 namespace Telephony {
26 using namespace OHOS::Telephony;
27 std::unique_ptr<ShortMessage> SmsGsmMessageTest::gsmMessage_ = nullptr;
28 
ProcessInput(int inputCMD,bool & loopFlag) const29 void SmsGsmMessageTest::ProcessInput(int inputCMD, bool &loopFlag) const
30 {
31     std::cout << "inputCMD is:" << inputCMD << std::endl;
32     switch (inputCMD) {
33         case 0x00:
34             Test7BitSubmitSms();
35             break;
36         case 0x01:
37             TestUcs2SubmitSms();
38             break;
39         case 0x02:
40             Test7BitDeliverySms();
41             break;
42         case 0x03:
43             TestUcs2DeliverySms();
44             break;
45         case 0x04:
46             TestStatusReportSms();
47             break;
48         case 0x05:
49             TestMultiPageUcs2Sms();
50             break;
51         case 0x06:
52             TestWapPushSms();
53             break;
54         case 0x07:
55             TestDataSmsDeliverySms();
56             break;
57         case 0x08:
58             TestSmsc00DeliverySms();
59             break;
60         case 0x09:
61             TestMultiPage7bitSms();
62             break;
63         case 0x0a:
64             Test7BitOtherSubmitSms();
65             break;
66         case 0x0b:
67             Test7BitDeliverySms2();
68             break;
69         case 0x0c:
70             Test7BitDeliverySms3();
71             break;
72         case 0x0d:
73             Test7BitDeliverySms4();
74             break;
75         default:
76             loopFlag = false;
77             break;
78     }
79 }
80 
ProcessTest() const81 void SmsGsmMessageTest::ProcessTest() const
82 {
83     bool loopFlag = true;
84     while (loopFlag) {
85         std::cout << "\nusage:please input a cmd num:\n"
86                      "0:Test7BitSubmitSms\n"
87                      "1:TestUcs2SubmitSms\n"
88                      "2:Test7BitDeliverySms\r\n"
89                      "3:TestUcs2DeliverySms\r\n"
90                      "4:TestStatusReportSms\r\n"
91                      "5:TestMultiPageUcs2Sms\r\n"
92                      "6:TestWapPushSms\r\n"
93                      "7:TestDataSmsDeliverySms\r\n"
94                      "8:TestSmsc00DeliverySms\r\n"
95                      "9:TestMultiPage7bitSms\r\n"
96                      "10:Test7BitOtherSubmitSms\r\n"
97                      "11:Test7BitDeliverySms2\r\n"
98                      "12:Test7BitDeliverySms3\r\n"
99                      "13:Test7BitDeliverySms4\r\n"
100                      "Other key:exit \n\n";
101 
102         int inputCMD = 0;
103         std::cin >> inputCMD;
104         while (std::cin.fail()) {
105             std::cin.clear();
106             std::cin.ignore();
107             std::cin >> inputCMD;
108         }
109         ProcessInput(inputCMD, loopFlag);
110     }
111 }
112 
Test7BitSubmitSms() const113 void SmsGsmMessageTest::Test7BitSubmitSms() const
114 {
115     AccessMmsToken token;
116     std::vector<unsigned char> pdu = StringUtils::HexToByteVector("21010B818176251308F4000002C130");
117     ShortMessage *message = new ShortMessage();
118     if (message == nullptr) {
119         std::cout << "message is nullptr!" << std::endl;
120         return;
121     }
122     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
123     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
124     if (gsmMessage_ == nullptr) {
125         std::cout << "Test7BitSubmitSms fail!!!" << std::endl;
126     } else {
127         std::cout << "Test7BitSubmitSms success!!!" << std::endl;
128     }
129 }
130 
TestUcs2SubmitSms() const131 void SmsGsmMessageTest::TestUcs2SubmitSms() const
132 {
133     AccessMmsToken token;
134     std::vector<unsigned char> pdu = StringUtils::HexToByteVector("21020B818176251308F40008046D4B8BD5");
135     ShortMessage *message = new ShortMessage();
136     if (message == nullptr) {
137         std::cout << "message is nullptr!" << std::endl;
138         return;
139     }
140     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
141     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
142     if (gsmMessage_ == nullptr) {
143         std::cout << "TestUcs2SubmitSms fail!!!" << std::endl;
144     } else {
145         std::cout << "TestUcs2SubmitSms success!!!" << std::endl;
146     }
147 }
148 
Test7BitDeliverySms() const149 void SmsGsmMessageTest::Test7BitDeliverySms() const
150 {
151     AccessMmsToken token;
152     std::vector<unsigned char> pdu =
153         StringUtils::HexToByteVector("0891683108200075F4240D91688129562983F600001240800102142302C130");
154     ShortMessage *message = new ShortMessage();
155     if (message == nullptr) {
156         std::cout << "message is nullptr!" << std::endl;
157         return;
158     }
159     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
160     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
161     if (gsmMessage_ == nullptr) {
162         std::cout << "Test7BitDeliverySms fail!!!" << std::endl;
163     } else {
164         std::cout << "Test7BitDeliverySms success!!!" << std::endl;
165     }
166 }
167 
TestUcs2DeliverySms() const168 void SmsGsmMessageTest::TestUcs2DeliverySms() const
169 {
170     AccessMmsToken token;
171     std::vector<unsigned char> pdu =
172         StringUtils::HexToByteVector("0891683110206005F0240DA1688176251308F4000832500381459323044F60597D");
173     ShortMessage *message = new ShortMessage();
174     if (message == nullptr) {
175         std::cout << "message is nullptr!" << std::endl;
176         return;
177     }
178     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
179     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
180     if (gsmMessage_ == nullptr) {
181         std::cout << "TestUcs2DeliverySms fail!!!" << std::endl;
182     } else {
183         std::cout << "TestUcs2DeliverySms success!!!" << std::endl;
184     }
185 }
186 
TestStatusReportSms() const187 void SmsGsmMessageTest::TestStatusReportSms() const
188 {
189     AccessMmsToken token;
190     std::vector<unsigned char> pdu =
191         StringUtils::HexToByteVector("0891683110808805F006510B818176251308F4325013113382233250131143802300");
192 
193     ShortMessage *message = new ShortMessage();
194     if (message == nullptr) {
195         std::cout << "message is nullptr!" << std::endl;
196         return;
197     }
198     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
199     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
200     if (gsmMessage_ == nullptr) {
201         std::cout << "TestStatusReportSms fail!!!" << std::endl;
202     } else {
203         std::cout << "TestStatusReportSms success!!!" << std::endl;
204     }
205 }
206 
TestMultiPageUcs2Sms() const207 void SmsGsmMessageTest::TestMultiPageUcs2Sms() const
208 {
209     AccessMmsToken token;
210     std::vector<unsigned char> pdu = StringUtils::HexToByteVector(
211         "0891683110205005F06005A00110F00008325052214182238C050003D3030200310030002E0063006E002F007100410053004B00380020"
212         "FF0C4EE5514D6B216708521D6263966476F851738D397528540E5F7154CD60A876846B635E384F7F752830024E2D56FD"
213         "8054901A0041005000507545723D65B04F539A8CFF0C70B951FB0020002000680074007400700073003A002F002F0075002E0031003000"
214         "3000310030002E");
215 
216     ShortMessage *message = new ShortMessage();
217     if (message == nullptr) {
218         std::cout << "message is nullptr!" << std::endl;
219         return;
220     }
221     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
222     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
223     if (gsmMessage_ == nullptr) {
224         std::cout << "TestMultiPageUcs2Sms fail!!!" << std::endl;
225     } else {
226         std::cout << "TestMultiPageUcs2Sms success!!!" << std::endl;
227     }
228 }
229 
TestWapPushSms() const230 void SmsGsmMessageTest::TestWapPushSms() const
231 {
232     AccessMmsToken token;
233     std::vector<unsigned char> pdu = StringUtils::HexToByteVector(
234         "0891683110205005F0640BA10156455102F1000432109261715023880605040B8423F04C06246170706C69636174696F6E2F766E642E77"
235         "61702E6D6D732D6D65737361676500B487AF848C829850765030303031365A645430008D9089178031363630373532313930382F545950"
236         "453D504C4D4E008A808E040001298D"
237         "8805810303F47B83687474703A2F2F31302E3132332E31382E38303A3138302F76564F455F3000");
238 
239     ShortMessage *message = new ShortMessage();
240     if (message == nullptr) {
241         std::cout << "message is nullptr!" << std::endl;
242         return;
243     }
244     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
245     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
246     if (gsmMessage_ == nullptr) {
247         std::cout << "TestWapPushSms fail!!!" << std::endl;
248     } else {
249         std::cout << "TestWapPushSms success!!!" << std::endl;
250     }
251 }
252 
TestDataSmsDeliverySms() const253 void SmsGsmMessageTest::TestDataSmsDeliverySms() const
254 {
255     AccessMmsToken token;
256     std::vector<unsigned char> pdu = StringUtils::HexToByteVector(
257         "0891683110808805F0640D91686106571209F80000327030021205231306050400640000E8329BFD06DDDF723619");
258 
259     ShortMessage *message = new ShortMessage();
260     if (message == nullptr) {
261         std::cout << "message is nullptr!" << std::endl;
262         return;
263     }
264     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
265     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
266     if (gsmMessage_ == nullptr) {
267         std::cout << "TestDataSmsDeliverySms fail!!!" << std::endl;
268     } else {
269         std::cout << "TestDataSmsDeliverySms success!!!" << std::endl;
270     }
271 }
272 
TestSmsc00DeliverySms() const273 void SmsGsmMessageTest::TestSmsc00DeliverySms() const
274 {
275     AccessMmsToken token;
276     std::vector<unsigned char> pdu = StringUtils::HexToByteVector("00240D91689141468496F600001270721142432302B319");
277 
278     ShortMessage *message = new ShortMessage();
279     if (message == nullptr) {
280         std::cout << "message is nullptr!" << std::endl;
281         return;
282     }
283     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
284     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
285     if (gsmMessage_ == nullptr) {
286         std::cout << "TestSmsc00DeliverySms fail!!!" << std::endl;
287     } else {
288         std::cout << "TestSmsc00DeliverySms success!!!" << std::endl;
289     }
290 }
291 
TestMultiPage7bitSms() const292 void SmsGsmMessageTest::TestMultiPage7bitSms() const
293 {
294     AccessMmsToken token;
295     std::vector<unsigned char> pdu = StringUtils::HexToByteVector(
296         "0891683110206005F0640DA1688176251308F4000032806190051123A00500030F020162B1582C168BC562B1582C168BC562B2198D369B"
297         "CD68B5582C269BCD62B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C16"
298         "8BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC562B1582C168BC540B1582C168BC562B1582C168BC56231D98C"
299         "469BCD66");
300 
301     ShortMessage *message = new ShortMessage();
302     if (message == nullptr) {
303         std::cout << "message is nullptr!" << std::endl;
304         return;
305     }
306     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
307     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
308     if (gsmMessage_ == nullptr) {
309         std::cout << "TestMultiPage7bitSms fail!!!" << std::endl;
310     } else {
311         std::cout << "TestMultiPage7bitSms success!!!" << std::endl;
312     }
313 }
314 
Test7BitOtherSubmitSms() const315 void SmsGsmMessageTest::Test7BitOtherSubmitSms() const
316 {
317     AccessMmsToken token;
318     std::vector<unsigned char> pdu = StringUtils::HexToByteVector("00010005910110F0000003E17018");
319     ShortMessage *message = new ShortMessage();
320     if (message == nullptr) {
321         std::cout << "message is nullptr!" << std::endl;
322         return;
323     }
324     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
325     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
326     if (gsmMessage_ == nullptr) {
327         std::cout << "Test7BitOtherSubmitSms fail!!!" << std::endl;
328     } else {
329         std::cout << "Test7BitOtherSubmitSms success!!!" << std::endl;
330     }
331 }
332 
Test7BitDeliverySms2() const333 void SmsGsmMessageTest::Test7BitDeliverySms2() const
334 {
335     AccessMmsToken token;
336     std::vector<unsigned char> pdu = StringUtils::HexToByteVector("07915892208800F0040ED0A3F19CDD7A52A100084"
337        "24011119582235C4F60768400630073006C00200041007000704E006B2160275BC678BC70BA00340038003700330032003730025"
338        "98267097591554FFF0C8ACB806F7D6100630073006C670D52D971B17DDA003200350031003200330031003200333002");
339     ShortMessage *message = new ShortMessage();
340     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
341     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
342     if (gsmMessage_ == nullptr) {
343         std::cout << "Test7BitDeliverySms2 fail!!!" << std::endl;
344     } else {
345         std::cout << "Test7BitDeliverySms2 success!!!" << std::endl;
346     }
347 }
348 
Test7BitDeliverySms3() const349 void SmsGsmMessageTest::Test7BitDeliverySms3() const
350 {
351     AccessMmsToken token;
352     std::vector<unsigned char> pdu = StringUtils::HexToByteVector("07915892208800F00410D0A3F19CDD7A52A13400084"
353         "24011119582235C4F60768400630073006C00200041007000704E006B2160275BC678BC70BA003400380037003300320037300259"
354         "8267097591554FFF0C8ACB806F7D6100630073006C670D52D971B17DDA003200350031003200330031003200333002");
355     ShortMessage *message = new ShortMessage();
356     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
357     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
358     if (gsmMessage_ == nullptr) {
359         std::cout << "Test7BitDeliverySms3 fail!!!" << std::endl;
360     } else {
361         std::cout << "Test7BitDeliverySms3 success!!!" << std::endl;
362     }
363 }
364 
Test7BitDeliverySms4() const365 void SmsGsmMessageTest::Test7BitDeliverySms4() const
366 {
367     AccessMmsToken token;
368     std::vector<unsigned char> pdu = StringUtils::HexToByteVector("07915892208800F0040DD0A3F19CDD7A520100084"
369         "24011119582235C4F60768400630073006C00200041007000704E006B2160275BC678BC70BA0034003800370033003200373002"
370         "598267097591554FFF0C8ACB806F7D6100630073006C670D52D971B17DDA003200350031003200330031003200333002");
371     ShortMessage *message = new ShortMessage();
372     ShortMessage::CreateMessage(pdu, u"3gpp", *message);
373     gsmMessage_ = std::unique_ptr<ShortMessage>(message);
374     if (gsmMessage_ == nullptr) {
375         std::cout << "Test7BitDeliverySms4 fail!!!" << std::endl;
376     } else {
377         std::cout << "Test7BitDeliverySms4 success!!!" << std::endl;
378     }
379 }
380 } // namespace Telephony
381 } // namespace OHOS