1e5d0e473Sopenharmony_ci/*
2e5d0e473Sopenharmony_ci * Copyright (C) 2023 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
16e5d0e473Sopenharmony_ci#define private public
17e5d0e473Sopenharmony_ci#define protected public
18e5d0e473Sopenharmony_ci
19e5d0e473Sopenharmony_ci#include "cdma_sms_message.h"
20e5d0e473Sopenharmony_ci#include "cdma_sms_transport_message.h"
21e5d0e473Sopenharmony_ci#include "core_service_client.h"
22e5d0e473Sopenharmony_ci#include "gtest/gtest.h"
23e5d0e473Sopenharmony_ci#include "i_sms_service_interface.h"
24e5d0e473Sopenharmony_ci#include "if_system_ability_manager.h"
25e5d0e473Sopenharmony_ci#include "iservice_registry.h"
26e5d0e473Sopenharmony_ci#include "radio_event.h"
27e5d0e473Sopenharmony_ci#include "sms_mms_gtest.h"
28e5d0e473Sopenharmony_ci#include "sms_mms_test_helper.h"
29e5d0e473Sopenharmony_ci#include "sms_service.h"
30e5d0e473Sopenharmony_ci#include "sms_service_manager_client.h"
31e5d0e473Sopenharmony_ci#include "string_utils.h"
32e5d0e473Sopenharmony_ci#include "telephony_log_wrapper.h"
33e5d0e473Sopenharmony_ci
34e5d0e473Sopenharmony_cinamespace OHOS {
35e5d0e473Sopenharmony_cinamespace Telephony {
36e5d0e473Sopenharmony_cinamespace {
37e5d0e473Sopenharmony_cisptr<ISmsServiceInterface> g_telephonyService = nullptr;
38e5d0e473Sopenharmony_ci} // namespace
39e5d0e473Sopenharmony_ciusing namespace testing::ext;
40e5d0e473Sopenharmony_ci
41e5d0e473Sopenharmony_ciclass CdmaSmsGtest : public testing::Test {
42e5d0e473Sopenharmony_cipublic:
43e5d0e473Sopenharmony_ci    static void SetUpTestCase();
44e5d0e473Sopenharmony_ci    static void TearDownTestCase();
45e5d0e473Sopenharmony_ci    void SetUp();
46e5d0e473Sopenharmony_ci    void TearDown();
47e5d0e473Sopenharmony_ci    static sptr<ISmsServiceInterface> GetProxy();
48e5d0e473Sopenharmony_ci    static bool HasSimCard(int32_t slotId)
49e5d0e473Sopenharmony_ci    {
50e5d0e473Sopenharmony_ci        bool hasSimCard = false;
51e5d0e473Sopenharmony_ci        if (CoreServiceClient::GetInstance().GetProxy() == nullptr) {
52e5d0e473Sopenharmony_ci            return hasSimCard;
53e5d0e473Sopenharmony_ci        }
54e5d0e473Sopenharmony_ci        CoreServiceClient::GetInstance().HasSimCard(slotId, hasSimCard);
55e5d0e473Sopenharmony_ci        return hasSimCard;
56e5d0e473Sopenharmony_ci    }
57e5d0e473Sopenharmony_ci};
58e5d0e473Sopenharmony_ci
59e5d0e473Sopenharmony_civoid CdmaSmsGtest::TearDownTestCase() {}
60e5d0e473Sopenharmony_ci
61e5d0e473Sopenharmony_civoid CdmaSmsGtest::SetUp() {}
62e5d0e473Sopenharmony_ci
63e5d0e473Sopenharmony_civoid CdmaSmsGtest::TearDown() {}
64e5d0e473Sopenharmony_ci
65e5d0e473Sopenharmony_ciconst int32_t DEFAULT_SIM_SLOT_ID_1 = 1;
66e5d0e473Sopenharmony_ciconst uint8_t HEX_CHAR_LEN = 2;
67e5d0e473Sopenharmony_ciconst uint8_t UNICODE_CHAR_LEN = 2;
68e5d0e473Sopenharmony_ciconst uint8_t VALUE_INDEX = 2;
69e5d0e473Sopenharmony_ciconst char *CDMA_PDU = "01010101";
70e5d0e473Sopenharmony_ciconst char *OTHER_CDMA_PDU = "111111";
71e5d0e473Sopenharmony_ci
72e5d0e473Sopenharmony_civoid CdmaSmsGtest::SetUpTestCase()
73e5d0e473Sopenharmony_ci{
74e5d0e473Sopenharmony_ci    TELEPHONY_LOGI("SetUpTestCase slotId%{public}d", DEFAULT_SIM_SLOT_ID_1);
75e5d0e473Sopenharmony_ci    g_telephonyService = GetProxy();
76e5d0e473Sopenharmony_ci    if (g_telephonyService == nullptr) {
77e5d0e473Sopenharmony_ci        return;
78e5d0e473Sopenharmony_ci    }
79e5d0e473Sopenharmony_ci    Singleton<SmsServiceManagerClient>::GetInstance().ResetSmsServiceProxy();
80e5d0e473Sopenharmony_ci    Singleton<SmsServiceManagerClient>::GetInstance().InitSmsServiceProxy();
81e5d0e473Sopenharmony_ci}
82e5d0e473Sopenharmony_ci
83e5d0e473Sopenharmony_cisptr<ISmsServiceInterface> CdmaSmsGtest::GetProxy()
84e5d0e473Sopenharmony_ci{
85e5d0e473Sopenharmony_ci    auto systemAbilityMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
86e5d0e473Sopenharmony_ci    if (systemAbilityMgr == nullptr) {
87e5d0e473Sopenharmony_ci        return nullptr;
88e5d0e473Sopenharmony_ci    }
89e5d0e473Sopenharmony_ci    sptr<IRemoteObject> remote = systemAbilityMgr->CheckSystemAbility(TELEPHONY_SMS_MMS_SYS_ABILITY_ID);
90e5d0e473Sopenharmony_ci    if (remote) {
91e5d0e473Sopenharmony_ci        sptr<ISmsServiceInterface> smsService = iface_cast<ISmsServiceInterface>(remote);
92e5d0e473Sopenharmony_ci        return smsService;
93e5d0e473Sopenharmony_ci    }
94e5d0e473Sopenharmony_ci    return nullptr;
95e5d0e473Sopenharmony_ci}
96e5d0e473Sopenharmony_ci
97e5d0e473Sopenharmony_ci#ifndef TEL_TEST_UNSUPPORT
98e5d0e473Sopenharmony_ci/**
99e5d0e473Sopenharmony_ci * @tc.number   Telephony_SmsMmsGtest_CdmaSmsMessage_0001
100e5d0e473Sopenharmony_ci * @tc.name     Test CdmaSmsMessage
101e5d0e473Sopenharmony_ci * @tc.desc     Function test
102e5d0e473Sopenharmony_ci */
103e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, CdmaSmsMessage_0001, Function | MediumTest | Level1)
104e5d0e473Sopenharmony_ci{
105e5d0e473Sopenharmony_ci    TELEPHONY_LOGI("TelSMSMMSTest::CdmaSmsMessage_0001 -->");
106e5d0e473Sopenharmony_ci    CdmaSmsMessage cdmaSmsMessage;
107e5d0e473Sopenharmony_ci    std::string dest = "dest";
108e5d0e473Sopenharmony_ci    std::string sc = "sc";
109e5d0e473Sopenharmony_ci    std::string text = "text";
110e5d0e473Sopenharmony_ci    int32_t port = 10;
111e5d0e473Sopenharmony_ci    uint8_t *data;
112e5d0e473Sopenharmony_ci    uint32_t dataLen = 10;
113e5d0e473Sopenharmony_ci    std::string pdu = "01000B818176251308F4000007E8B0BCFD76E701";
114e5d0e473Sopenharmony_ci    bool bStatusReport = false;
115e5d0e473Sopenharmony_ci    DataCodingScheme codingScheme = DATA_CODING_7BIT;
116e5d0e473Sopenharmony_ci    cdmaSmsMessage.CreateSubmitTransMsg(dest, sc, text, bStatusReport, codingScheme);
117e5d0e473Sopenharmony_ci    cdmaSmsMessage.CreateSubmitTransMsg(dest, sc, port, data, dataLen, bStatusReport);
118e5d0e473Sopenharmony_ci    cdmaSmsMessage.GreateTransMsg();
119e5d0e473Sopenharmony_ci    cdmaSmsMessage.CovertEncodingType(codingScheme);
120e5d0e473Sopenharmony_ci    cdmaSmsMessage.CreateMessage(pdu);
121e5d0e473Sopenharmony_ci    cdmaSmsMessage.PduAnalysis(pdu);
122e5d0e473Sopenharmony_ci    CdmaP2PMsg p2pMsg;
123e5d0e473Sopenharmony_ci    cdmaSmsMessage.AnalysisP2pMsg(p2pMsg);
124e5d0e473Sopenharmony_ci    cdmaSmsMessage.AnalsisDeliverMwi(p2pMsg);
125e5d0e473Sopenharmony_ci    bool ret = cdmaSmsMessage.PduAnalysis("");
126e5d0e473Sopenharmony_ci    EXPECT_EQ(false, ret);
127e5d0e473Sopenharmony_ci}
128e5d0e473Sopenharmony_ci
129e5d0e473Sopenharmony_ci/**
130e5d0e473Sopenharmony_ci * @tc.number   Telephony_SmsMmsGtest_CdmaSmsReceiveHandler_0001
131e5d0e473Sopenharmony_ci * @tc.name     Test CdmaSmsReceiveHandler
132e5d0e473Sopenharmony_ci * @tc.desc     Function test
133e5d0e473Sopenharmony_ci */
134e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, CdmaSmsReceiveHandler_0001, Function | MediumTest | Level1)
135e5d0e473Sopenharmony_ci{
136e5d0e473Sopenharmony_ci    TELEPHONY_LOGI("TelSMSMMSTest::CdmaSmsReceiveHandler_0001 -->");
137e5d0e473Sopenharmony_ci    auto smsReceiveManager = std::make_shared<SmsReceiveManager>(DEFAULT_SIM_SLOT_ID);
138e5d0e473Sopenharmony_ci    EXPECT_TRUE(smsReceiveManager != nullptr);
139e5d0e473Sopenharmony_ci    smsReceiveManager->Init();
140e5d0e473Sopenharmony_ci    EXPECT_TRUE(smsReceiveManager->cdmaSmsReceiveHandler_ != nullptr);
141e5d0e473Sopenharmony_ci    int32_t retInt = smsReceiveManager->cdmaSmsReceiveHandler_->HandleSmsByType(nullptr);
142e5d0e473Sopenharmony_ci    EXPECT_EQ(AckIncomeCause::SMS_ACK_UNKNOWN_ERROR, retInt);
143e5d0e473Sopenharmony_ci}
144e5d0e473Sopenharmony_ci
145e5d0e473Sopenharmony_ci/**
146e5d0e473Sopenharmony_ci * @tc.number   Telephony_SmsMmsGtest_CdmaSmsReceiveHandler_0002
147e5d0e473Sopenharmony_ci * @tc.name     Test CdmaSmsReceiveHandler
148e5d0e473Sopenharmony_ci * @tc.desc     Function test
149e5d0e473Sopenharmony_ci */
150e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, CdmaSmsReceiveHandler_0002, Function | MediumTest | Level1)
151e5d0e473Sopenharmony_ci{
152e5d0e473Sopenharmony_ci    TELEPHONY_LOGI("TelSMSMMSTest::CdmaSmsReceiveHandler_0002 -->");
153e5d0e473Sopenharmony_ci    auto smsReceiveManager = std::make_shared<SmsReceiveManager>(DEFAULT_SIM_SLOT_ID);
154e5d0e473Sopenharmony_ci    EXPECT_TRUE(smsReceiveManager != nullptr);
155e5d0e473Sopenharmony_ci    smsReceiveManager->Init();
156e5d0e473Sopenharmony_ci    EXPECT_TRUE(smsReceiveManager->cdmaSmsReceiveHandler_ != nullptr);
157e5d0e473Sopenharmony_ci    auto retMsg = std::make_shared<CdmaSmsMessage>();
158e5d0e473Sopenharmony_ci    retMsg = CdmaSmsMessage::CreateMessage(CDMA_PDU);
159e5d0e473Sopenharmony_ci    EXPECT_EQ(retMsg, nullptr);
160e5d0e473Sopenharmony_ci    auto cdmaMsg = std::make_shared<CdmaSmsMessage>();
161e5d0e473Sopenharmony_ci    cdmaMsg->transMsg_ = std::make_unique<struct CdmaTransportMsg>();
162e5d0e473Sopenharmony_ci    cdmaMsg->transMsg_->type = CdmaTransportMsgType::BROADCAST;
163e5d0e473Sopenharmony_ci    int32_t retInt = smsReceiveManager->cdmaSmsReceiveHandler_->HandleSmsByType(cdmaMsg);
164e5d0e473Sopenharmony_ci    EXPECT_EQ(AckIncomeCause::SMS_ACK_RESULT_OK, retInt);
165e5d0e473Sopenharmony_ci    cdmaMsg->transMsg_->type = CdmaTransportMsgType::P2P;
166e5d0e473Sopenharmony_ci    retInt = smsReceiveManager->cdmaSmsReceiveHandler_->HandleSmsByType(cdmaMsg);
167e5d0e473Sopenharmony_ci    EXPECT_EQ(AckIncomeCause::SMS_ACK_RESULT_OK, retInt);
168e5d0e473Sopenharmony_ci    cdmaMsg->transMsg_->type = CdmaTransportMsgType::ACK;
169e5d0e473Sopenharmony_ci    retInt = smsReceiveManager->cdmaSmsReceiveHandler_->HandleSmsByType(cdmaMsg);
170e5d0e473Sopenharmony_ci    EXPECT_EQ(AckIncomeCause::SMS_ACK_RESULT_OK, retInt);
171e5d0e473Sopenharmony_ci    cdmaMsg->transMsg_->type = CdmaTransportMsgType::RESERVED;
172e5d0e473Sopenharmony_ci    retInt = smsReceiveManager->cdmaSmsReceiveHandler_->HandleSmsByType(cdmaMsg);
173e5d0e473Sopenharmony_ci    EXPECT_EQ(AckIncomeCause::SMS_ACK_RESULT_OK, retInt);
174e5d0e473Sopenharmony_ci}
175e5d0e473Sopenharmony_ci
176e5d0e473Sopenharmony_ci/**
177e5d0e473Sopenharmony_ci * @tc.number   Telephony_SmsMmsGtest_CdmaSmsReceiveHandler_0003
178e5d0e473Sopenharmony_ci * @tc.name     Test CdmaSmsReceiveHandler
179e5d0e473Sopenharmony_ci * @tc.desc     Function test
180e5d0e473Sopenharmony_ci */
181e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, CdmaSmsReceiveHandler_0003, Function | MediumTest | Level1)
182e5d0e473Sopenharmony_ci{
183e5d0e473Sopenharmony_ci    TELEPHONY_LOGI("TelSMSMMSTest::CdmaSmsReceiveHandler_0003 -->");
184e5d0e473Sopenharmony_ci    auto smsReceiveManager = std::make_shared<SmsReceiveManager>(DEFAULT_SIM_SLOT_ID);
185e5d0e473Sopenharmony_ci    EXPECT_TRUE(smsReceiveManager != nullptr);
186e5d0e473Sopenharmony_ci    smsReceiveManager->Init();
187e5d0e473Sopenharmony_ci    EXPECT_TRUE(smsReceiveManager->cdmaSmsReceiveHandler_ != nullptr);
188e5d0e473Sopenharmony_ci    int32_t retInt = smsReceiveManager->cdmaSmsReceiveHandler_->HandleSmsOtherSvcid(nullptr);
189e5d0e473Sopenharmony_ci    EXPECT_NE(AckIncomeCause::SMS_ACK_RESULT_OK, retInt);
190e5d0e473Sopenharmony_ci    auto retMsg = CdmaSmsMessage::CreateMessage(OTHER_CDMA_PDU);
191e5d0e473Sopenharmony_ci    EXPECT_EQ(retMsg, nullptr);
192e5d0e473Sopenharmony_ci
193e5d0e473Sopenharmony_ci    auto cdmaMsg = std::make_shared<CdmaSmsMessage>();
194e5d0e473Sopenharmony_ci    smsReceiveManager->cdmaSmsReceiveHandler_->ReplySmsToSmsc(1);
195e5d0e473Sopenharmony_ci    retInt = smsReceiveManager->cdmaSmsReceiveHandler_->HandleSmsOtherSvcid(cdmaMsg);
196e5d0e473Sopenharmony_ci    EXPECT_NE(AckIncomeCause::SMS_ACK_RESULT_OK, retInt);
197e5d0e473Sopenharmony_ci    cdmaMsg->smsConcat_ = std::make_shared<SmsConcat>();
198e5d0e473Sopenharmony_ci    cdmaMsg->smsConcat_->is8Bits = true;
199e5d0e473Sopenharmony_ci    cdmaMsg->smsConcat_->msgRef = 1;
200e5d0e473Sopenharmony_ci    cdmaMsg->smsConcat_->seqNum = 1;
201e5d0e473Sopenharmony_ci    cdmaMsg->smsConcat_->totalSeg = 1;
202e5d0e473Sopenharmony_ci    retInt = smsReceiveManager->cdmaSmsReceiveHandler_->HandleSmsOtherSvcid(cdmaMsg);
203e5d0e473Sopenharmony_ci    EXPECT_NE(AckIncomeCause::SMS_ACK_RESULT_OK, retInt);
204e5d0e473Sopenharmony_ci}
205e5d0e473Sopenharmony_ci
206e5d0e473Sopenharmony_ci/**
207e5d0e473Sopenharmony_ci * @tc.number   Telephony_SmsMmsGtest_CdmaSmsReceiveHandler_0004
208e5d0e473Sopenharmony_ci * @tc.name     Test CdmaSmsReceiveHandler
209e5d0e473Sopenharmony_ci * @tc.desc     Function test
210e5d0e473Sopenharmony_ci */
211e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, CdmaSmsReceiveHandler_0004, Function | MediumTest | Level1)
212e5d0e473Sopenharmony_ci{
213e5d0e473Sopenharmony_ci    TELEPHONY_LOGI("TelSMSMMSTest::CdmaSmsReceiveHandler_0004 -->");
214e5d0e473Sopenharmony_ci    auto smsReceiveManager = std::make_shared<SmsReceiveManager>(DEFAULT_SIM_SLOT_ID);
215e5d0e473Sopenharmony_ci    EXPECT_TRUE(smsReceiveManager != nullptr);
216e5d0e473Sopenharmony_ci    smsReceiveManager->Init();
217e5d0e473Sopenharmony_ci    EXPECT_TRUE(smsReceiveManager->cdmaSmsReceiveHandler_ != nullptr);
218e5d0e473Sopenharmony_ci    std::function<void(std::shared_ptr<SmsSendIndexer>)> fun = nullptr;
219e5d0e473Sopenharmony_ci    auto smsSender = std::make_shared<CdmaSmsSender>(DEFAULT_SIM_SLOT_ID, fun);
220e5d0e473Sopenharmony_ci    smsReceiveManager->cdmaSmsReceiveHandler_->SetCdmaSender(smsSender);
221e5d0e473Sopenharmony_ci    auto info = std::make_shared<SmsMessageInfo>();
222e5d0e473Sopenharmony_ci    auto ret = smsReceiveManager->cdmaSmsReceiveHandler_->TransformMessageInfo(info);
223e5d0e473Sopenharmony_ci    EXPECT_EQ(ret, nullptr);
224e5d0e473Sopenharmony_ci    smsReceiveManager->cdmaSmsReceiveHandler_->SendCBBroadcast(nullptr);
225e5d0e473Sopenharmony_ci    auto cdmaMsg = std::make_shared<CdmaSmsMessage>();
226e5d0e473Sopenharmony_ci    EXPECT_EQ(smsReceiveManager->cdmaSmsReceiveHandler_->SendCBBroadcast(cdmaMsg), true);
227e5d0e473Sopenharmony_ci}
228e5d0e473Sopenharmony_ci
229e5d0e473Sopenharmony_ci/**
230e5d0e473Sopenharmony_ci * @tc.number   Telephony_CdmaSmsGtest_SmsPduBuffer_0001
231e5d0e473Sopenharmony_ci * @tc.name     Test SmsPduBuffer
232e5d0e473Sopenharmony_ci * @tc.desc     Function test
233e5d0e473Sopenharmony_ci */
234e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, SmsPduBuffer_0001, Function | MediumTest | Level1)
235e5d0e473Sopenharmony_ci{
236e5d0e473Sopenharmony_ci    auto buffer = std::make_shared<SmsPduBuffer>();
237e5d0e473Sopenharmony_ci    EXPECT_TRUE(buffer->IsEmpty());
238e5d0e473Sopenharmony_ci    EXPECT_EQ(buffer->GetIndex(), 0);
239e5d0e473Sopenharmony_ci    EXPECT_FALSE(buffer->SetIndex(1));
240e5d0e473Sopenharmony_ci    EXPECT_EQ(buffer->MoveForward(), 0);
241e5d0e473Sopenharmony_ci    EXPECT_EQ(buffer->SkipBits(), 0);
242e5d0e473Sopenharmony_ci
243e5d0e473Sopenharmony_ci    std::string pduHex = "00000210020000021002";
244e5d0e473Sopenharmony_ci    std::string pdu = StringUtils::HexToString(pduHex);
245e5d0e473Sopenharmony_ci    auto rBuffer = std::make_shared<SmsReadBuffer>(pdu);
246e5d0e473Sopenharmony_ci    EXPECT_FALSE(rBuffer->IsEmpty());
247e5d0e473Sopenharmony_ci    rBuffer->SetIndex(0);
248e5d0e473Sopenharmony_ci    uint8_t v = 0;
249e5d0e473Sopenharmony_ci    uint16_t v2 = 0;
250e5d0e473Sopenharmony_ci    EXPECT_TRUE(rBuffer->ReadByte(v));
251e5d0e473Sopenharmony_ci    EXPECT_TRUE(rBuffer->ReadWord(v2));
252e5d0e473Sopenharmony_ci    EXPECT_TRUE(rBuffer->ReadBits(v));
253e5d0e473Sopenharmony_ci
254e5d0e473Sopenharmony_ci    auto wBuffer = std::make_shared<SmsWriteBuffer>();
255e5d0e473Sopenharmony_ci    EXPECT_FALSE(wBuffer->IsEmpty());
256e5d0e473Sopenharmony_ci    wBuffer->SetIndex(0);
257e5d0e473Sopenharmony_ci    v = 1;
258e5d0e473Sopenharmony_ci    v2 = 0x1234;
259e5d0e473Sopenharmony_ci    EXPECT_TRUE(wBuffer->WriteByte(v));
260e5d0e473Sopenharmony_ci    EXPECT_TRUE(wBuffer->WriteWord(v2));
261e5d0e473Sopenharmony_ci    EXPECT_TRUE(wBuffer->InsertByte(v, 1));
262e5d0e473Sopenharmony_ci    EXPECT_TRUE(wBuffer->WriteBits(v));
263e5d0e473Sopenharmony_ci}
264e5d0e473Sopenharmony_ci
265e5d0e473Sopenharmony_ci/**
266e5d0e473Sopenharmony_ci * @tc.number   Telephony_CdmaSmsGtest_CdmaSmsTransportMessage_0001
267e5d0e473Sopenharmony_ci * @tc.name     Test CdmaSmsTransportMessage
268e5d0e473Sopenharmony_ci * @tc.desc     Function test
269e5d0e473Sopenharmony_ci */
270e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, CdmaSmsTransportMessage_0001, Function | MediumTest | Level1)
271e5d0e473Sopenharmony_ci{
272e5d0e473Sopenharmony_ci    TELEPHONY_LOGI("TelSMSMMSTest::CdmaSmsTransportMessage_0001 -->");
273e5d0e473Sopenharmony_ci    CdmaSmsMessage cdmaSmsMessage;
274e5d0e473Sopenharmony_ci    std::string dest = "dest";
275e5d0e473Sopenharmony_ci    std::string sc = "sc";
276e5d0e473Sopenharmony_ci    std::string text = "text";
277e5d0e473Sopenharmony_ci    bool bStatusReport = false;
278e5d0e473Sopenharmony_ci    DataCodingScheme codingScheme = DATA_CODING_7BIT;
279e5d0e473Sopenharmony_ci    std::unique_ptr<CdmaTransportMsg> transMsg =
280e5d0e473Sopenharmony_ci        cdmaSmsMessage.CreateSubmitTransMsg(dest, sc, text, bStatusReport, codingScheme);
281e5d0e473Sopenharmony_ci
282e5d0e473Sopenharmony_ci    std::unique_ptr<CdmaSmsTransportMessage> transportMessage =
283e5d0e473Sopenharmony_ci        CdmaSmsTransportMessage::CreateTransportMessage(*transMsg.get());
284e5d0e473Sopenharmony_ci    SmsWriteBuffer pduBuffer;
285e5d0e473Sopenharmony_ci    EXPECT_NE(transportMessage, nullptr);
286e5d0e473Sopenharmony_ci    EXPECT_NE(transportMessage->IsEmpty(), true);
287e5d0e473Sopenharmony_ci    EXPECT_EQ(transportMessage->Encode(pduBuffer), true);
288e5d0e473Sopenharmony_ci    std::unique_ptr<std::vector<uint8_t>> pdu = pduBuffer.GetPduBuffer();
289e5d0e473Sopenharmony_ci    EXPECT_NE(pdu, nullptr);
290e5d0e473Sopenharmony_ci    EXPECT_GT(pdu->size(), static_cast<uint32_t>(0));
291e5d0e473Sopenharmony_ci}
292e5d0e473Sopenharmony_ci
293e5d0e473Sopenharmony_ci/**
294e5d0e473Sopenharmony_ci * @tc.number   Telephony_CdmaSmsGtest_CdmaSmsTransportMessage_0002
295e5d0e473Sopenharmony_ci * @tc.name     Test CdmaSmsTransportMessage
296e5d0e473Sopenharmony_ci * @tc.desc     Function test
297e5d0e473Sopenharmony_ci */
298e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, CdmaSmsTransportMessage_0002, Function | MediumTest | Level1)
299e5d0e473Sopenharmony_ci{
300e5d0e473Sopenharmony_ci    TELEPHONY_LOGI("TelSMSMMSTest::CdmaSmsTransportMessage_0002 -->");
301e5d0e473Sopenharmony_ci    std::string pduHex = "0000021002040702C48D159E268406010408260003200640011910D61C58F265CD9F469D5AF66DDDBF871E5CFA75E"
302e5d0e473Sopenharmony_ci                         "DDFC79F400801000A0140";
303e5d0e473Sopenharmony_ci    std::string pdu = StringUtils::HexToString(pduHex);
304e5d0e473Sopenharmony_ci    SmsReadBuffer pduBuffer(pdu);
305e5d0e473Sopenharmony_ci    CdmaTransportMsg msg;
306e5d0e473Sopenharmony_ci    memset_s(&msg, sizeof(msg), 0, sizeof(msg));
307e5d0e473Sopenharmony_ci    std::unique_ptr<CdmaSmsTransportMessage> transportMessage =
308e5d0e473Sopenharmony_ci        CdmaSmsTransportMessage::CreateTransportMessage(msg, pduBuffer);
309e5d0e473Sopenharmony_ci    EXPECT_NE(transportMessage, nullptr);
310e5d0e473Sopenharmony_ci    EXPECT_NE(transportMessage->IsEmpty(), true);
311e5d0e473Sopenharmony_ci    EXPECT_EQ(transportMessage->Decode(pduBuffer), true);
312e5d0e473Sopenharmony_ci}
313e5d0e473Sopenharmony_ci
314e5d0e473Sopenharmony_ci/**
315e5d0e473Sopenharmony_ci * @tc.number   Telephony_CdmaSmsGtest_CdmaSmsTransportMessage_0003
316e5d0e473Sopenharmony_ci * @tc.name     Test CdmaSmsTransportMessage
317e5d0e473Sopenharmony_ci * @tc.desc     Function test
318e5d0e473Sopenharmony_ci */
319e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, CdmaSmsTransportMessage_0003, Function | MediumTest | Level1)
320e5d0e473Sopenharmony_ci{
321e5d0e473Sopenharmony_ci    // BROADCAST DELIVER CMASDATA
322e5d0e473Sopenharmony_ci    uint8_t cmasTestBearerData[] = { 0x00, 0x03, 0x1C, 0x78, 0x00, 0x01, 0x59, 0x02, 0xB8, 0x00, 0x02, 0x10, 0xAA,
323e5d0e473Sopenharmony_ci        0x68, 0xD3, 0xCD, 0x06, 0x9E, 0x68, 0x30, 0xA0, 0xE9, 0x97, 0x9F, 0x44, 0x1B, 0xF3, 0x20, 0xE9, 0xA3, 0x2A,
324e5d0e473Sopenharmony_ci        0x08, 0x7B, 0xF6, 0xED, 0xCB, 0xCB, 0x1E, 0x9C, 0x3B, 0x10, 0x4D, 0xDF, 0x8B, 0x4E, 0xCC, 0xA8, 0x20, 0xEC,
325e5d0e473Sopenharmony_ci        0xCB, 0xCB, 0xA2, 0x0A, 0x7E, 0x79, 0xF4, 0xCB, 0xB5, 0x72, 0x0A, 0x9A, 0x34, 0xF3, 0x41, 0xA7, 0x9A, 0x0D,
326e5d0e473Sopenharmony_ci        0xFB, 0xB6, 0x79, 0x41, 0x85, 0x07, 0x4C, 0xBC, 0xFA, 0x2E, 0x00, 0x08, 0x20, 0x58, 0x38, 0x88, 0x80, 0x10,
327e5d0e473Sopenharmony_ci        0x54, 0x06, 0x38, 0x20, 0x60, 0x30, 0xA8, 0x81, 0x90, 0x20, 0x08 };
328e5d0e473Sopenharmony_ci
329e5d0e473Sopenharmony_ci    std::stringstream ss;
330e5d0e473Sopenharmony_ci    ss.clear();
331e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(CdmaTransportMsgType::BROADCAST);
332e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(CdmaSmsParameterRecord::SERVICE_CATEGORY);
333e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(0x02);
334e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(static_cast<uint16_t>(SmsServiceCtg::CMAS_TEST) >> 8);
335e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(static_cast<uint16_t>(SmsServiceCtg::CMAS_TEST) & 0xff);
336e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(CdmaSmsParameterRecord::BEARER_DATA);
337e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(sizeof(cmasTestBearerData));
338e5d0e473Sopenharmony_ci    for (uint8_t i = 0; i < sizeof(cmasTestBearerData); i++) {
339e5d0e473Sopenharmony_ci        ss << cmasTestBearerData[i];
340e5d0e473Sopenharmony_ci    }
341e5d0e473Sopenharmony_ci    SmsReadBuffer rBuffer(ss.str());
342e5d0e473Sopenharmony_ci    CdmaTransportMsg msg;
343e5d0e473Sopenharmony_ci    memset_s(&msg, sizeof(msg), 0, sizeof(msg));
344e5d0e473Sopenharmony_ci    std::unique_ptr<CdmaSmsTransportMessage> message = CdmaSmsTransportMessage::CreateTransportMessage(msg, rBuffer);
345e5d0e473Sopenharmony_ci    EXPECT_TRUE(message->Decode(rBuffer));
346e5d0e473Sopenharmony_ci    EXPECT_EQ(msg.data.broadcast.telesvcMsg.data.deliver.msgId.msgId, 0xc780);
347e5d0e473Sopenharmony_ci    EXPECT_EQ(msg.data.broadcast.serviceCtg, static_cast<uint16_t>(SmsServiceCtg::CMAS_TEST));
348e5d0e473Sopenharmony_ci    EXPECT_EQ(msg.data.broadcast.telesvcMsg.data.deliver.cmasData.dataLen, 74);
349e5d0e473Sopenharmony_ci    EXPECT_EQ(msg.data.broadcast.telesvcMsg.data.deliver.cmasData.urgency, SmsCmaeUrgency::EXPECTED);
350e5d0e473Sopenharmony_ci}
351e5d0e473Sopenharmony_ci
352e5d0e473Sopenharmony_ci/**
353e5d0e473Sopenharmony_ci * @tc.number   Telephony_CdmaSmsGtest_CdmaSmsTransportMessage_0004
354e5d0e473Sopenharmony_ci * @tc.name     Test CdmaSmsTransportMessage
355e5d0e473Sopenharmony_ci * @tc.desc     Function test
356e5d0e473Sopenharmony_ci */
357e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, CdmaSmsTransportMessage_0004, Function | MediumTest | Level1)
358e5d0e473Sopenharmony_ci{
359e5d0e473Sopenharmony_ci    // BROADCAST DELIVER USERDATA(BCCBB)
360e5d0e473Sopenharmony_ci    std::string pduHex = "0101020004081300031008d00106102c2870e1420801c00c01c0";
361e5d0e473Sopenharmony_ci    std::string pdu = StringUtils::HexToString(pduHex);
362e5d0e473Sopenharmony_ci    SmsReadBuffer pduBuffer(pdu);
363e5d0e473Sopenharmony_ci    CdmaTransportMsg msg;
364e5d0e473Sopenharmony_ci    memset_s(&msg, sizeof(msg), 0, sizeof(msg));
365e5d0e473Sopenharmony_ci    std::unique_ptr<CdmaSmsTransportMessage> transportMessage =
366e5d0e473Sopenharmony_ci        CdmaSmsTransportMessage::CreateTransportMessage(msg, pduBuffer);
367e5d0e473Sopenharmony_ci    EXPECT_NE(transportMessage, nullptr);
368e5d0e473Sopenharmony_ci    EXPECT_FALSE(transportMessage->IsEmpty());
369e5d0e473Sopenharmony_ci    EXPECT_TRUE(transportMessage->Decode(pduBuffer));
370e5d0e473Sopenharmony_ci}
371e5d0e473Sopenharmony_ci
372e5d0e473Sopenharmony_cistring GetUserDataString(SmsTeleSvcUserData userData)
373e5d0e473Sopenharmony_ci{
374e5d0e473Sopenharmony_ci    std::stringstream ssUserData;
375e5d0e473Sopenharmony_ci    if (userData.encodeType == SmsEncodingType::UNICODE) {
376e5d0e473Sopenharmony_ci        char unicodeChar[UNICODE_CHAR_LEN + 1];
377e5d0e473Sopenharmony_ci        unicodeChar[UNICODE_CHAR_LEN] = '\0';
378e5d0e473Sopenharmony_ci        for (uint8_t i = 0; i < userData.userData.length; i += UNICODE_CHAR_LEN) {
379e5d0e473Sopenharmony_ci            ssUserData << "\\u";
380e5d0e473Sopenharmony_ci            snprintf_s(unicodeChar, sizeof(unicodeChar), sizeof(unicodeChar) - 1, "%02x",
381e5d0e473Sopenharmony_ci                static_cast<uint8_t>(userData.userData.data[i]));
382e5d0e473Sopenharmony_ci            ssUserData << unicodeChar;
383e5d0e473Sopenharmony_ci            snprintf_s(unicodeChar, sizeof(unicodeChar), sizeof(unicodeChar) - 1, "%02x",
384e5d0e473Sopenharmony_ci                static_cast<uint8_t>(userData.userData.data[i + 1]));
385e5d0e473Sopenharmony_ci            ssUserData << unicodeChar;
386e5d0e473Sopenharmony_ci        }
387e5d0e473Sopenharmony_ci    } else {
388e5d0e473Sopenharmony_ci        for (uint8_t i = 0; i < userData.userData.length; i++) {
389e5d0e473Sopenharmony_ci            ssUserData << static_cast<uint8_t>(userData.userData.data[i]);
390e5d0e473Sopenharmony_ci        }
391e5d0e473Sopenharmony_ci    }
392e5d0e473Sopenharmony_ci    return ssUserData.str();
393e5d0e473Sopenharmony_ci}
394e5d0e473Sopenharmony_ci
395e5d0e473Sopenharmony_civoid CheckDeliverUserData(string pdu, string userData)
396e5d0e473Sopenharmony_ci{
397e5d0e473Sopenharmony_ci    std::stringstream ss;
398e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(CdmaSmsParameterRecord::BEARER_DATA);
399e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(pdu.size() / HEX_CHAR_LEN);
400e5d0e473Sopenharmony_ci    ss << StringUtils::HexToString(pdu);
401e5d0e473Sopenharmony_ci
402e5d0e473Sopenharmony_ci    CdmaTeleserviceMsg v;
403e5d0e473Sopenharmony_ci    memset_s(&v, sizeof(CdmaTeleserviceMsg), 0x00, sizeof(CdmaTeleserviceMsg));
404e5d0e473Sopenharmony_ci    SmsReadBuffer rBuffer(ss.str());
405e5d0e473Sopenharmony_ci    rBuffer.SetIndex(VALUE_INDEX);
406e5d0e473Sopenharmony_ci    auto message = std::make_shared<CdmaSmsBearerData>(v, rBuffer);
407e5d0e473Sopenharmony_ci    rBuffer.SetIndex(0);
408e5d0e473Sopenharmony_ci    EXPECT_TRUE(message->Decode(rBuffer));
409e5d0e473Sopenharmony_ci    EXPECT_STREQ(GetUserDataString(v.data.deliver.userData).c_str(), userData.c_str());
410e5d0e473Sopenharmony_ci}
411e5d0e473Sopenharmony_ci
412e5d0e473Sopenharmony_civoid CheckSubmitUserData(string pdu, string userData)
413e5d0e473Sopenharmony_ci{
414e5d0e473Sopenharmony_ci    std::stringstream ss;
415e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(CdmaSmsParameterRecord::BEARER_DATA);
416e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(pdu.size() / HEX_CHAR_LEN);
417e5d0e473Sopenharmony_ci    ss << StringUtils::HexToString(pdu);
418e5d0e473Sopenharmony_ci
419e5d0e473Sopenharmony_ci    CdmaTeleserviceMsg v;
420e5d0e473Sopenharmony_ci    memset_s(&v, sizeof(CdmaTeleserviceMsg), 0x00, sizeof(CdmaTeleserviceMsg));
421e5d0e473Sopenharmony_ci    SmsReadBuffer rBuffer(ss.str());
422e5d0e473Sopenharmony_ci    rBuffer.SetIndex(VALUE_INDEX);
423e5d0e473Sopenharmony_ci    auto message = std::make_shared<CdmaSmsBearerData>(v, rBuffer);
424e5d0e473Sopenharmony_ci    rBuffer.SetIndex(0);
425e5d0e473Sopenharmony_ci    EXPECT_TRUE(message->Decode(rBuffer));
426e5d0e473Sopenharmony_ci    EXPECT_STREQ(GetUserDataString(v.data.submit.userData).c_str(), userData.c_str());
427e5d0e473Sopenharmony_ci
428e5d0e473Sopenharmony_ci    auto message1 = std::make_shared<CdmaSmsBearerData>(v);
429e5d0e473Sopenharmony_ci    SmsWriteBuffer wBuffer;
430e5d0e473Sopenharmony_ci    EXPECT_TRUE(message1->Encode(wBuffer));
431e5d0e473Sopenharmony_ci    auto buffer = wBuffer.GetPduBuffer();
432e5d0e473Sopenharmony_ci    EXPECT_GT(buffer->size(), 0);
433e5d0e473Sopenharmony_ci    std::stringstream ssEncode;
434e5d0e473Sopenharmony_ci    for (uint16_t i = 0; i < buffer->size(); i++) {
435e5d0e473Sopenharmony_ci        ssEncode << (*buffer)[i];
436e5d0e473Sopenharmony_ci    }
437e5d0e473Sopenharmony_ci
438e5d0e473Sopenharmony_ci    CdmaTeleserviceMsg v2;
439e5d0e473Sopenharmony_ci    memset_s(&v2, sizeof(CdmaTeleserviceMsg), 0x00, sizeof(CdmaTeleserviceMsg));
440e5d0e473Sopenharmony_ci    SmsReadBuffer rBuffer2(ssEncode.str());
441e5d0e473Sopenharmony_ci    rBuffer2.SetIndex(VALUE_INDEX);
442e5d0e473Sopenharmony_ci    auto message2 = std::make_shared<CdmaSmsBearerData>(v2, rBuffer2);
443e5d0e473Sopenharmony_ci    rBuffer2.SetIndex(0);
444e5d0e473Sopenharmony_ci    EXPECT_TRUE(message2->Decode(rBuffer2));
445e5d0e473Sopenharmony_ci    EXPECT_STREQ(GetUserDataString(v2.data.submit.userData).c_str(), userData.c_str());
446e5d0e473Sopenharmony_ci}
447e5d0e473Sopenharmony_ci
448e5d0e473Sopenharmony_ci/**
449e5d0e473Sopenharmony_ci * @tc.number   Telephony_CdmaSmsGtest_CdmaSmsBearerData_0001
450e5d0e473Sopenharmony_ci * @tc.name     Test CdmaSmsBearerData
451e5d0e473Sopenharmony_ci * @tc.desc     Function test
452e5d0e473Sopenharmony_ci */
453e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, CdmaSmsBearerData_0001, Function | MediumTest | Level1)
454e5d0e473Sopenharmony_ci{
455e5d0e473Sopenharmony_ci    // gsm 7bit
456e5d0e473Sopenharmony_ci    CheckDeliverUserData("00031040900112488ea794e074d69e1b7392c270326cde9e98", "Test standard SMS");
457e5d0e473Sopenharmony_ci    // ascii 7bit
458e5d0e473Sopenharmony_ci    CheckDeliverUserData("0003100160010610262d5ab500", "bjjj");
459e5d0e473Sopenharmony_ci    // ia5
460e5d0e473Sopenharmony_ci    CheckDeliverUserData("00031002100109184539b4d052ebb3d0", "SMS Rulz");
461e5d0e473Sopenharmony_ci    // unicode
462e5d0e473Sopenharmony_ci    CheckDeliverUserData("000310021001062012716B2C380801000A0140", "\\u4e2d\\u6587");
463e5d0e473Sopenharmony_ci
464e5d0e473Sopenharmony_ci    // gsm 7bit
465e5d0e473Sopenharmony_ci    CheckSubmitUserData("00032006400112488ea794e074d69e1b7392c270326cde9e98", "Test standard SMS");
466e5d0e473Sopenharmony_ci    // ascii 7bit
467e5d0e473Sopenharmony_ci    CheckSubmitUserData("0003200640010610262d5ab500", "bjjj");
468e5d0e473Sopenharmony_ci    // ia5
469e5d0e473Sopenharmony_ci    CheckSubmitUserData("00032006400109184539b4d052ebb3d0", "SMS Rulz");
470e5d0e473Sopenharmony_ci    // unicode
471e5d0e473Sopenharmony_ci    CheckSubmitUserData("000320064001062012716B2C380801000A0140", "\\u4e2d\\u6587");
472e5d0e473Sopenharmony_ci}
473e5d0e473Sopenharmony_ci
474e5d0e473Sopenharmony_ci/**
475e5d0e473Sopenharmony_ci * @tc.number   Telephony_CdmaSmsGtest_CdmaSmsBearerData_0002
476e5d0e473Sopenharmony_ci * @tc.name     Test CdmaSmsBearerData
477e5d0e473Sopenharmony_ci * @tc.desc     Function test
478e5d0e473Sopenharmony_ci */
479e5d0e473Sopenharmony_ciHWTEST_F(CdmaSmsGtest, CdmaSmsBearerData_0002, Function | MediumTest | Level1)
480e5d0e473Sopenharmony_ci{
481e5d0e473Sopenharmony_ci    std::string dataStr = "0003200010010410168d20020105030608120111015905019206069706180000000801c00901800a01e00b"
482e5d0e473Sopenharmony_ci                          "01030c01c00d01070e05039acc13880f018011020566";
483e5d0e473Sopenharmony_ci    std::stringstream ss;
484e5d0e473Sopenharmony_ci    ss.clear();
485e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(CdmaSmsParameterRecord::BEARER_DATA);
486e5d0e473Sopenharmony_ci    ss << static_cast<uint8_t>(dataStr.size() / HEX_CHAR_LEN);
487e5d0e473Sopenharmony_ci    ss << StringUtils::HexToString(dataStr);
488e5d0e473Sopenharmony_ci
489e5d0e473Sopenharmony_ci    CdmaTeleserviceMsg v;
490e5d0e473Sopenharmony_ci    memset_s(&v, sizeof(CdmaTeleserviceMsg), 0x00, sizeof(CdmaTeleserviceMsg));
491e5d0e473Sopenharmony_ci    SmsReadBuffer rBuffer(ss.str());
492e5d0e473Sopenharmony_ci    rBuffer.SetIndex(VALUE_INDEX);
493e5d0e473Sopenharmony_ci    auto message = std::make_shared<CdmaSmsBearerData>(v, rBuffer);
494e5d0e473Sopenharmony_ci    rBuffer.SetIndex(0);
495e5d0e473Sopenharmony_ci    EXPECT_TRUE(message->Decode(rBuffer));
496e5d0e473Sopenharmony_ci    EXPECT_EQ(v.type, TeleserviceMsgType::SUBMIT);
497e5d0e473Sopenharmony_ci    EXPECT_EQ(v.data.submit.msgId.msgId, 1);
498e5d0e473Sopenharmony_ci    EXPECT_EQ(v.data.submit.priority, SmsPriorityIndicator::EMERGENCY);
499e5d0e473Sopenharmony_ci    EXPECT_EQ(v.data.submit.privacy, SmsPrivacyIndicator::CONFIDENTIAL);
500e5d0e473Sopenharmony_ci    EXPECT_EQ(v.data.submit.callbackNumber.addrLen, 7);
501e5d0e473Sopenharmony_ci    char number[] = "3598271";
502e5d0e473Sopenharmony_ci    for (uint8_t i = 0; i < sizeof(number); i++) {
503e5d0e473Sopenharmony_ci        EXPECT_EQ(v.data.submit.callbackNumber.szData[i], number[i]);
504e5d0e473Sopenharmony_ci    }
505e5d0e473Sopenharmony_ci    EXPECT_EQ(v.data.submit.depositId, 1382);
506e5d0e473Sopenharmony_ci    EXPECT_EQ(v.data.submit.language, SmsLanguageType::HEBREW);
507e5d0e473Sopenharmony_ci    EXPECT_EQ(v.data.submit.alertPriority, SmsAlertPriority::HIGH);
508e5d0e473Sopenharmony_ci    EXPECT_EQ(v.data.submit.deferValPeriod.time.absTime.year, 97);
509e5d0e473Sopenharmony_ci    EXPECT_EQ(v.data.submit.deferValPeriod.time.absTime.month, 6);
510e5d0e473Sopenharmony_ci    EXPECT_EQ(v.data.submit.deferValPeriod.time.absTime.day, 18);
511e5d0e473Sopenharmony_ci}
512e5d0e473Sopenharmony_ci#endif // TEL_TEST_UNSUPPORT
513e5d0e473Sopenharmony_ci} // namespace Telephony
514e5d0e473Sopenharmony_ci} // namespace OHOS