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 16e5d0e473Sopenharmony_ci#include <memory> 17e5d0e473Sopenharmony_ci#include <vector> 18e5d0e473Sopenharmony_ci 19e5d0e473Sopenharmony_ci#include "cdma_sms_test.h" 20e5d0e473Sopenharmony_ci#include "common_event_support.h" 21e5d0e473Sopenharmony_ci#include "gsm_sms_sender_test.h" 22e5d0e473Sopenharmony_ci#include "if_system_ability_manager.h" 23e5d0e473Sopenharmony_ci#include "ipc_skeleton.h" 24e5d0e473Sopenharmony_ci#include "iservice_registry.h" 25e5d0e473Sopenharmony_ci#include "mms_msg_test.h" 26e5d0e473Sopenharmony_ci#include "short_message_test.h" 27e5d0e473Sopenharmony_ci#include "sms_broadcast_subscriber.h" 28e5d0e473Sopenharmony_ci#include "sms_cb_message_test.h" 29e5d0e473Sopenharmony_ci#include "sms_gsm_message_test.h" 30e5d0e473Sopenharmony_ci 31e5d0e473Sopenharmony_ciusing namespace OHOS; 32e5d0e473Sopenharmony_ciusing namespace OHOS::Telephony; 33e5d0e473Sopenharmony_ciusing namespace OHOS::EventFwk; 34e5d0e473Sopenharmony_ci 35e5d0e473Sopenharmony_ciusing TestStruct = struct FunStruct { 36e5d0e473Sopenharmony_ci std::string funName; 37e5d0e473Sopenharmony_ci std::function<void(void)> fun = nullptr; 38e5d0e473Sopenharmony_ci FunStruct(const std::string &name, const std::function<void(void)> &function) : funName(name), fun(function) {} 39e5d0e473Sopenharmony_ci}; 40e5d0e473Sopenharmony_ci 41e5d0e473Sopenharmony_ciusing TestParam = struct Param { 42e5d0e473Sopenharmony_ci GsmSmsSenderTest gsmSmsSenderTest; 43e5d0e473Sopenharmony_ci ShortMessageTest shortMessageTest; 44e5d0e473Sopenharmony_ci SmsCbMessageTest smsCbMessageTest; 45e5d0e473Sopenharmony_ci MmsMsgTest mmsMsgTest; 46e5d0e473Sopenharmony_ci CdmaSmsTest cdmaSmsTest; 47e5d0e473Sopenharmony_ci SmsGsmMessageTest smsGsmMessageTest; 48e5d0e473Sopenharmony_ci}; 49e5d0e473Sopenharmony_ci 50e5d0e473Sopenharmony_cinamespace OHOS { 51e5d0e473Sopenharmony_cinamespace Telephony { 52e5d0e473Sopenharmony_ciclass SmsMmsTest { 53e5d0e473Sopenharmony_cipublic: 54e5d0e473Sopenharmony_ci SmsMmsTest() = default; 55e5d0e473Sopenharmony_ci ~SmsMmsTest() = default; 56e5d0e473Sopenharmony_ci 57e5d0e473Sopenharmony_ci void TestRecev() 58e5d0e473Sopenharmony_ci { 59e5d0e473Sopenharmony_ci EventFwk::MatchingSkills matchingSkills; 60e5d0e473Sopenharmony_ci matchingSkills.AddEvent(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_RECEIVE_COMPLETED); 61e5d0e473Sopenharmony_ci matchingSkills.AddEvent(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_EMERGENCY_CB_RECEIVE_COMPLETED); 62e5d0e473Sopenharmony_ci matchingSkills.AddEvent(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_CB_RECEIVE_COMPLETED); 63e5d0e473Sopenharmony_ci matchingSkills.AddEvent(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_WAPPUSH_RECEIVE_COMPLETED); 64e5d0e473Sopenharmony_ci // make subcriber info 65e5d0e473Sopenharmony_ci EventFwk::CommonEventSubscribeInfo subscriberInfo(matchingSkills); 66e5d0e473Sopenharmony_ci // make a subcriber object 67e5d0e473Sopenharmony_ci std::shared_ptr<SmsBroadcastSubscriber> subscriberTest = 68e5d0e473Sopenharmony_ci std::make_shared<SmsBroadcastSubscriber>(subscriberInfo); 69e5d0e473Sopenharmony_ci if (subscriberTest == nullptr) { 70e5d0e473Sopenharmony_ci return; 71e5d0e473Sopenharmony_ci } 72e5d0e473Sopenharmony_ci // subscribe a common event 73e5d0e473Sopenharmony_ci bool subscribeResult = EventFwk::CommonEventManager::SubscribeCommonEvent(subscriberTest); 74e5d0e473Sopenharmony_ci std::cout << "subscribeResult is " << (subscribeResult ? "true" : "false") << std::endl; 75e5d0e473Sopenharmony_ci } 76e5d0e473Sopenharmony_ci 77e5d0e473Sopenharmony_ci void InitGsmFun(const std::unique_ptr<std::vector<TestStruct>> &funArray, const TestParam ¶m, 78e5d0e473Sopenharmony_ci const sptr<ISmsServiceInterface> &smsService) 79e5d0e473Sopenharmony_ci { 80e5d0e473Sopenharmony_ci funArray->emplace_back( 81e5d0e473Sopenharmony_ci "TestSendShortText", std::bind(&GsmSmsSenderTest::TestSendShortText, param.gsmSmsSenderTest, smsService)); 82e5d0e473Sopenharmony_ci funArray->emplace_back("TestGsmSendShortData", 83e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestGsmSendShortData, param.gsmSmsSenderTest, smsService)); 84e5d0e473Sopenharmony_ci funArray->emplace_back( 85e5d0e473Sopenharmony_ci "TestSendLongText", std::bind(&GsmSmsSenderTest::TestSendLongText, param.gsmSmsSenderTest, smsService)); 86e5d0e473Sopenharmony_ci funArray->emplace_back("TestGsmSendLongData", 87e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestGsmSendLongData, param.gsmSmsSenderTest, smsService)); 88e5d0e473Sopenharmony_ci funArray->emplace_back( 89e5d0e473Sopenharmony_ci "TestSendMms", std::bind(&GsmSmsSenderTest::TestSendMms, param.gsmSmsSenderTest, smsService)); 90e5d0e473Sopenharmony_ci funArray->emplace_back( 91e5d0e473Sopenharmony_ci "TestSetSmscAddr", std::bind(&GsmSmsSenderTest::TestSetSmscAddr, param.gsmSmsSenderTest, smsService)); 92e5d0e473Sopenharmony_ci funArray->emplace_back( 93e5d0e473Sopenharmony_ci "TestGetSmscAddr", std::bind(&GsmSmsSenderTest::TestGetSmscAddr, param.gsmSmsSenderTest, smsService)); 94e5d0e473Sopenharmony_ci funArray->emplace_back("TestCbMessage", std::bind(&SmsCbMessageTest::ProcessTest, param.smsCbMessageTest)); 95e5d0e473Sopenharmony_ci funArray->emplace_back("TestEnableCBRangeConfig", 96e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestEnableCBRangeConfig, param.gsmSmsSenderTest, smsService)); 97e5d0e473Sopenharmony_ci funArray->emplace_back("TestDisableCBRangeConfig", 98e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestDisableCBRangeConfig, param.gsmSmsSenderTest, smsService)); 99e5d0e473Sopenharmony_ci funArray->emplace_back( 100e5d0e473Sopenharmony_ci "TestEnableCBConfig", std::bind(&GsmSmsSenderTest::TestEnableCBConfig, param.gsmSmsSenderTest, smsService)); 101e5d0e473Sopenharmony_ci funArray->emplace_back("TestDisableCBConfig", 102e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestDisableCBConfig, param.gsmSmsSenderTest, smsService)); 103e5d0e473Sopenharmony_ci funArray->emplace_back("TestSetDefaultSmsSlotId", 104e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestSetDefaultSmsSlotId, param.gsmSmsSenderTest, smsService)); 105e5d0e473Sopenharmony_ci funArray->emplace_back("TestGetDefaultSmsSlotId", 106e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestGetDefaultSmsSlotId, param.gsmSmsSenderTest, smsService)); 107e5d0e473Sopenharmony_ci funArray->emplace_back( 108e5d0e473Sopenharmony_ci "TestSplitMessage", std::bind(&GsmSmsSenderTest::TestSplitMessage, param.gsmSmsSenderTest, smsService)); 109e5d0e473Sopenharmony_ci funArray->emplace_back("TestGetSmsSegmentsInfo", 110e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestGetSmsSegmentsInfo, param.gsmSmsSenderTest, smsService)); 111e5d0e473Sopenharmony_ci funArray->emplace_back("TestIsImsSmsSupported", 112e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestIsImsSmsSupported, param.gsmSmsSenderTest, smsService)); 113e5d0e473Sopenharmony_ci funArray->emplace_back("TestSetImsSmsConfig", 114e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestSetImsSmsConfig, param.gsmSmsSenderTest, smsService)); 115e5d0e473Sopenharmony_ci funArray->emplace_back("TestGetImsShortMessageFormat", 116e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestGetImsShortMessageFormat, param.gsmSmsSenderTest, smsService)); 117e5d0e473Sopenharmony_ci funArray->emplace_back( 118e5d0e473Sopenharmony_ci "TestAddBlockPhone", std::bind(&GsmSmsSenderTest::TestAddBlockPhone, param.gsmSmsSenderTest)); 119e5d0e473Sopenharmony_ci funArray->emplace_back( 120e5d0e473Sopenharmony_ci "TestRemoveBlockPhone", std::bind(&GsmSmsSenderTest::TestRemoveBlockPhone, param.gsmSmsSenderTest)); 121e5d0e473Sopenharmony_ci funArray->emplace_back("TestHasSmsCapability", 122e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestHasSmsCapability, param.gsmSmsSenderTest, smsService)); 123e5d0e473Sopenharmony_ci } 124e5d0e473Sopenharmony_ci 125e5d0e473Sopenharmony_ci void InitSimMessageFun(const std::unique_ptr<std::vector<TestStruct>> &funArray, const TestParam ¶m, 126e5d0e473Sopenharmony_ci const sptr<ISmsServiceInterface> &smsService) 127e5d0e473Sopenharmony_ci { 128e5d0e473Sopenharmony_ci funArray->emplace_back( 129e5d0e473Sopenharmony_ci "TestAddSimMessage", std::bind(&GsmSmsSenderTest::TestAddSimMessage, param.gsmSmsSenderTest, smsService)); 130e5d0e473Sopenharmony_ci funArray->emplace_back( 131e5d0e473Sopenharmony_ci "TestDelSimMessage", std::bind(&GsmSmsSenderTest::TestDelSimMessage, param.gsmSmsSenderTest, smsService)); 132e5d0e473Sopenharmony_ci funArray->emplace_back("TestUpdateSimMessage", 133e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestUpdateSimMessage, param.gsmSmsSenderTest, smsService)); 134e5d0e473Sopenharmony_ci funArray->emplace_back("TestGetAllSimMessages", 135e5d0e473Sopenharmony_ci std::bind(&GsmSmsSenderTest::TestGetAllSimMessages, param.gsmSmsSenderTest, smsService)); 136e5d0e473Sopenharmony_ci } 137e5d0e473Sopenharmony_ci 138e5d0e473Sopenharmony_ci void InitShortMessageFun(const std::unique_ptr<std::vector<TestStruct>> &funArray, const TestParam ¶m, 139e5d0e473Sopenharmony_ci const sptr<ISmsServiceInterface> &smsService) 140e5d0e473Sopenharmony_ci { 141e5d0e473Sopenharmony_ci funArray->emplace_back( 142e5d0e473Sopenharmony_ci "TestCreateMessage", std::bind(&ShortMessageTest::TestCreateMessage, param.shortMessageTest)); 143e5d0e473Sopenharmony_ci funArray->emplace_back("TestGetVisibleMessageBody", 144e5d0e473Sopenharmony_ci std::bind(&ShortMessageTest::TestGetVisibleMessageBody, param.shortMessageTest)); 145e5d0e473Sopenharmony_ci funArray->emplace_back( 146e5d0e473Sopenharmony_ci "TestShowShortMessage", std::bind(&ShortMessageTest::TestShowShortMessage, param.shortMessageTest)); 147e5d0e473Sopenharmony_ci funArray->emplace_back( 148e5d0e473Sopenharmony_ci "TestCreate3Gpp2Message", std::bind(&ShortMessageTest::Test3Gpp2CreateMessage, param.shortMessageTest)); 149e5d0e473Sopenharmony_ci } 150e5d0e473Sopenharmony_ci 151e5d0e473Sopenharmony_ci void InitMmsFun(const std::unique_ptr<std::vector<TestStruct>> &funArray, const TestParam ¶m, 152e5d0e473Sopenharmony_ci const sptr<ISmsServiceInterface> &smsService) 153e5d0e473Sopenharmony_ci { 154e5d0e473Sopenharmony_ci funArray->emplace_back("TestMmsMsgFunction", std::bind(&MmsMsgTest::ProcessTest, param.mmsMsgTest)); 155e5d0e473Sopenharmony_ci } 156e5d0e473Sopenharmony_ci 157e5d0e473Sopenharmony_ci void InitCdmaFun(const std::unique_ptr<std::vector<TestStruct>> &funArray, const TestParam ¶m, 158e5d0e473Sopenharmony_ci const sptr<ISmsServiceInterface> &smsService) 159e5d0e473Sopenharmony_ci { 160e5d0e473Sopenharmony_ci funArray->emplace_back("TestCdmaSmsFunction", std::bind(&CdmaSmsTest::ProcessTest, param.cdmaSmsTest)); 161e5d0e473Sopenharmony_ci } 162e5d0e473Sopenharmony_ci 163e5d0e473Sopenharmony_ci void InitGsmMessageFun(const std::unique_ptr<std::vector<TestStruct>> &funArray, const TestParam ¶m, 164e5d0e473Sopenharmony_ci const sptr<ISmsServiceInterface> &smsService) 165e5d0e473Sopenharmony_ci { 166e5d0e473Sopenharmony_ci funArray->emplace_back("TestSmsMessage", std::bind(&SmsGsmMessageTest::ProcessTest, param.smsGsmMessageTest)); 167e5d0e473Sopenharmony_ci } 168e5d0e473Sopenharmony_ci 169e5d0e473Sopenharmony_ci void InitFunArray(const std::unique_ptr<std::vector<TestStruct>> &funArray, const TestParam ¶m, 170e5d0e473Sopenharmony_ci const sptr<ISmsServiceInterface> &smsService) 171e5d0e473Sopenharmony_ci { 172e5d0e473Sopenharmony_ci InitGsmFun(funArray, param, smsService); 173e5d0e473Sopenharmony_ci InitSimMessageFun(funArray, param, smsService); 174e5d0e473Sopenharmony_ci InitShortMessageFun(funArray, param, smsService); 175e5d0e473Sopenharmony_ci InitMmsFun(funArray, param, smsService); 176e5d0e473Sopenharmony_ci InitCdmaFun(funArray, param, smsService); 177e5d0e473Sopenharmony_ci InitGsmMessageFun(funArray, param, smsService); 178e5d0e473Sopenharmony_ci } 179e5d0e473Sopenharmony_ci 180e5d0e473Sopenharmony_ci std::unique_ptr<std::vector<TestStruct>> GetFunArray(const sptr<ISmsServiceInterface> &smsService) 181e5d0e473Sopenharmony_ci { 182e5d0e473Sopenharmony_ci static TestParam param; 183e5d0e473Sopenharmony_ci param.shortMessageTest.TestCreateMessage(); 184e5d0e473Sopenharmony_ci std::unique_ptr<std::vector<TestStruct>> funArray = std::make_unique<std::vector<TestStruct>>(); 185e5d0e473Sopenharmony_ci if (smsService == nullptr || funArray == nullptr) { 186e5d0e473Sopenharmony_ci return funArray; 187e5d0e473Sopenharmony_ci } 188e5d0e473Sopenharmony_ci InitFunArray(funArray, param, smsService); 189e5d0e473Sopenharmony_ci return funArray; 190e5d0e473Sopenharmony_ci } 191e5d0e473Sopenharmony_ci}; 192e5d0e473Sopenharmony_ci} // namespace Telephony 193e5d0e473Sopenharmony_ci} // namespace OHOS 194e5d0e473Sopenharmony_ci 195e5d0e473Sopenharmony_ciint main() 196e5d0e473Sopenharmony_ci{ 197e5d0e473Sopenharmony_ci OHOS::Telephony::SmsMmsTest smsMmsTest; 198e5d0e473Sopenharmony_ci smsMmsTest.TestRecev(); 199e5d0e473Sopenharmony_ci sptr<ISystemAbilityManager> systemAbilityMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); 200e5d0e473Sopenharmony_ci sptr<IRemoteObject> remote = nullptr; 201e5d0e473Sopenharmony_ci sptr<ISmsServiceInterface> smsService = nullptr; 202e5d0e473Sopenharmony_ci if ((systemAbilityMgr == nullptr) || 203e5d0e473Sopenharmony_ci ((remote = systemAbilityMgr->CheckSystemAbility(TELEPHONY_SMS_MMS_SYS_ABILITY_ID)) == nullptr) || 204e5d0e473Sopenharmony_ci ((smsService = iface_cast<ISmsServiceInterface>(remote)) == nullptr)) { 205e5d0e473Sopenharmony_ci std::cout << "connect to sms service failed." << std::endl; 206e5d0e473Sopenharmony_ci return 0; 207e5d0e473Sopenharmony_ci } 208e5d0e473Sopenharmony_ci std::unique_ptr<std::vector<TestStruct>> testFunArray = smsMmsTest.GetFunArray(smsService); 209e5d0e473Sopenharmony_ci int8_t caseCount = 0; 210e5d0e473Sopenharmony_ci if (testFunArray == nullptr || ((caseCount = testFunArray->size()) <= 0)) { 211e5d0e473Sopenharmony_ci std::cout << "Failed to get testFunArray data!\n"; 212e5d0e473Sopenharmony_ci return 0; 213e5d0e473Sopenharmony_ci } 214e5d0e473Sopenharmony_ci std::string hint = "[-1]:Exit\n"; 215e5d0e473Sopenharmony_ci for (int index = 0; index < caseCount; ++index) { 216e5d0e473Sopenharmony_ci hint += "[" + std::to_string(index) + "]:" + (*testFunArray)[index].funName + "\n"; 217e5d0e473Sopenharmony_ci } 218e5d0e473Sopenharmony_ci while (smsService != nullptr) { 219e5d0e473Sopenharmony_ci std::cout << hint; 220e5d0e473Sopenharmony_ci std::cout << "Please input test case number!" << std::endl; 221e5d0e473Sopenharmony_ci std::string input; 222e5d0e473Sopenharmony_ci int caseNumber = 0; 223e5d0e473Sopenharmony_ci std::cin >> input; 224e5d0e473Sopenharmony_ci caseNumber = std::atoi(input.c_str()); 225e5d0e473Sopenharmony_ci std::cin.clear(); 226e5d0e473Sopenharmony_ci std::cin.ignore(); 227e5d0e473Sopenharmony_ci std::cin.sync(); 228e5d0e473Sopenharmony_ci if (caseNumber < -1 || caseNumber >= caseCount) { 229e5d0e473Sopenharmony_ci std::cout << "test case is not exist!" << std::endl; 230e5d0e473Sopenharmony_ci continue; 231e5d0e473Sopenharmony_ci } 232e5d0e473Sopenharmony_ci if (caseNumber == -1) { 233e5d0e473Sopenharmony_ci break; 234e5d0e473Sopenharmony_ci } 235e5d0e473Sopenharmony_ci std::cout << "Enter the " << (*testFunArray)[caseNumber].funName << " case!" << std::endl; 236e5d0e473Sopenharmony_ci if ((*testFunArray)[caseNumber].fun != nullptr) { 237e5d0e473Sopenharmony_ci (*testFunArray)[caseNumber].fun(); 238e5d0e473Sopenharmony_ci } 239e5d0e473Sopenharmony_ci } 240e5d0e473Sopenharmony_ci return 0; 241e5d0e473Sopenharmony_ci}