1e5d0e473Sopenharmony_ci/* 2e5d0e473Sopenharmony_ci * Copyright (C) 2023-2024 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 "gtest/gtest.h" 17e5d0e473Sopenharmony_ci#include "radio_event.h" 18e5d0e473Sopenharmony_ci#include "satellite/satellite_sms_service_ipc_interface_code.h" 19e5d0e473Sopenharmony_ci#include "satellite_sms_callback.h" 20e5d0e473Sopenharmony_ci#include "satellite_sms_proxy.h" 21e5d0e473Sopenharmony_ci#include "sms_common.h" 22e5d0e473Sopenharmony_ci#include "telephony_errors.h" 23e5d0e473Sopenharmony_ci#include "telephony_log_wrapper.h" 24e5d0e473Sopenharmony_ci 25e5d0e473Sopenharmony_cinamespace OHOS { 26e5d0e473Sopenharmony_cinamespace Telephony { 27e5d0e473Sopenharmony_ciusing namespace testing::ext; 28e5d0e473Sopenharmony_ci 29e5d0e473Sopenharmony_cinamespace { 30e5d0e473Sopenharmony_ciclass MockIRemoteObject : public IRemoteObject { 31e5d0e473Sopenharmony_cipublic: 32e5d0e473Sopenharmony_ci uint32_t requestCode_ = -1; 33e5d0e473Sopenharmony_ci 34e5d0e473Sopenharmony_cipublic: 35e5d0e473Sopenharmony_ci MockIRemoteObject() : IRemoteObject(u"mock_i_remote_object") {} 36e5d0e473Sopenharmony_ci 37e5d0e473Sopenharmony_ci ~MockIRemoteObject() {} 38e5d0e473Sopenharmony_ci 39e5d0e473Sopenharmony_ci int32_t GetObjectRefCount() override 40e5d0e473Sopenharmony_ci { 41e5d0e473Sopenharmony_ci return 0; 42e5d0e473Sopenharmony_ci } 43e5d0e473Sopenharmony_ci 44e5d0e473Sopenharmony_ci int SendRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override 45e5d0e473Sopenharmony_ci { 46e5d0e473Sopenharmony_ci TELEPHONY_LOGI("Mock SendRequest"); 47e5d0e473Sopenharmony_ci requestCode_ = code; 48e5d0e473Sopenharmony_ci reply.WriteInt32(0); 49e5d0e473Sopenharmony_ci return 0; 50e5d0e473Sopenharmony_ci } 51e5d0e473Sopenharmony_ci 52e5d0e473Sopenharmony_ci bool IsProxyObject() const override 53e5d0e473Sopenharmony_ci { 54e5d0e473Sopenharmony_ci return true; 55e5d0e473Sopenharmony_ci } 56e5d0e473Sopenharmony_ci 57e5d0e473Sopenharmony_ci bool CheckObjectLegality() const override 58e5d0e473Sopenharmony_ci { 59e5d0e473Sopenharmony_ci return true; 60e5d0e473Sopenharmony_ci } 61e5d0e473Sopenharmony_ci 62e5d0e473Sopenharmony_ci bool AddDeathRecipient(const sptr<DeathRecipient> &recipient) override 63e5d0e473Sopenharmony_ci { 64e5d0e473Sopenharmony_ci return true; 65e5d0e473Sopenharmony_ci } 66e5d0e473Sopenharmony_ci 67e5d0e473Sopenharmony_ci bool RemoveDeathRecipient(const sptr<DeathRecipient> &recipient) override 68e5d0e473Sopenharmony_ci { 69e5d0e473Sopenharmony_ci return true; 70e5d0e473Sopenharmony_ci } 71e5d0e473Sopenharmony_ci 72e5d0e473Sopenharmony_ci bool Marshalling(Parcel &parcel) const override 73e5d0e473Sopenharmony_ci { 74e5d0e473Sopenharmony_ci return true; 75e5d0e473Sopenharmony_ci } 76e5d0e473Sopenharmony_ci 77e5d0e473Sopenharmony_ci sptr<IRemoteBroker> AsInterface() override 78e5d0e473Sopenharmony_ci { 79e5d0e473Sopenharmony_ci return nullptr; 80e5d0e473Sopenharmony_ci } 81e5d0e473Sopenharmony_ci 82e5d0e473Sopenharmony_ci int Dump(int fd, const std::vector<std::u16string> &args) override 83e5d0e473Sopenharmony_ci { 84e5d0e473Sopenharmony_ci return 0; 85e5d0e473Sopenharmony_ci } 86e5d0e473Sopenharmony_ci 87e5d0e473Sopenharmony_ci std::u16string GetObjectDescriptor() const 88e5d0e473Sopenharmony_ci { 89e5d0e473Sopenharmony_ci std::u16string descriptor = std::u16string(); 90e5d0e473Sopenharmony_ci return descriptor; 91e5d0e473Sopenharmony_ci } 92e5d0e473Sopenharmony_ci}; 93e5d0e473Sopenharmony_ci} // namespace 94e5d0e473Sopenharmony_ci 95e5d0e473Sopenharmony_ciclass SmsSatelliteGtest : public testing::Test { 96e5d0e473Sopenharmony_cipublic: 97e5d0e473Sopenharmony_ci int32_t slotId_ = 0; 98e5d0e473Sopenharmony_ci static void SetUpTestCase(); 99e5d0e473Sopenharmony_ci static void TearDownTestCase(); 100e5d0e473Sopenharmony_ci void SetUp(); 101e5d0e473Sopenharmony_ci void TearDown(); 102e5d0e473Sopenharmony_ci}; 103e5d0e473Sopenharmony_ci 104e5d0e473Sopenharmony_civoid SmsSatelliteGtest::TearDownTestCase() {} 105e5d0e473Sopenharmony_ci 106e5d0e473Sopenharmony_civoid SmsSatelliteGtest::SetUp() {} 107e5d0e473Sopenharmony_ci 108e5d0e473Sopenharmony_civoid SmsSatelliteGtest::TearDown() {} 109e5d0e473Sopenharmony_ci 110e5d0e473Sopenharmony_civoid SmsSatelliteGtest::SetUpTestCase() {} 111e5d0e473Sopenharmony_ci 112e5d0e473Sopenharmony_ciuint32_t ToCode(SatelliteSmsServiceInterfaceCode code) 113e5d0e473Sopenharmony_ci{ 114e5d0e473Sopenharmony_ci return static_cast<uint32_t>(code); 115e5d0e473Sopenharmony_ci} 116e5d0e473Sopenharmony_ci 117e5d0e473Sopenharmony_ci/** 118e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsSatelliteGtest_RegisterSmsNotify_0001 119e5d0e473Sopenharmony_ci * @tc.name register sms callback 120e5d0e473Sopenharmony_ci * @tc.desc Function test 121e5d0e473Sopenharmony_ci */ 122e5d0e473Sopenharmony_ciHWTEST_F(SmsSatelliteGtest, RegisterSmsNotify_0001, Function | MediumTest | Level2) 123e5d0e473Sopenharmony_ci{ 124e5d0e473Sopenharmony_ci TELEPHONY_LOGI("SmsSatelliteGtest::RegisterSmsNotify_0001 -->"); 125e5d0e473Sopenharmony_ci sptr<MockIRemoteObject> remote = new (std::nothrow) MockIRemoteObject(); 126e5d0e473Sopenharmony_ci SatelliteSmsProxy proxy(remote); 127e5d0e473Sopenharmony_ci 128e5d0e473Sopenharmony_ci int32_t ret = proxy.RegisterSmsNotify(slotId_, RadioEvent::RADIO_SEND_SMS, nullptr); 129e5d0e473Sopenharmony_ci ASSERT_NE(ret, TELEPHONY_SUCCESS); 130e5d0e473Sopenharmony_ci 131e5d0e473Sopenharmony_ci sptr<ISatelliteSmsCallback> callback = std::make_unique<SatelliteSmsCallback>(nullptr).release(); 132e5d0e473Sopenharmony_ci ret = proxy.RegisterSmsNotify(slotId_, RadioEvent::RADIO_SEND_SMS, callback); 133e5d0e473Sopenharmony_ci ASSERT_EQ(remote->requestCode_, ToCode(SatelliteSmsServiceInterfaceCode::REGISTER_SMS_NOTIFY)); 134e5d0e473Sopenharmony_ci ASSERT_EQ(ret, TELEPHONY_SUCCESS); 135e5d0e473Sopenharmony_ci} 136e5d0e473Sopenharmony_ci 137e5d0e473Sopenharmony_ci/** 138e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsSatelliteGtest_UnRegisterSmsNotify_0001 139e5d0e473Sopenharmony_ci * @tc.name unregister sms callback 140e5d0e473Sopenharmony_ci * @tc.desc Function test 141e5d0e473Sopenharmony_ci */ 142e5d0e473Sopenharmony_ciHWTEST_F(SmsSatelliteGtest, UnRegisterSmsNotify_0001, Function | MediumTest | Level2) 143e5d0e473Sopenharmony_ci{ 144e5d0e473Sopenharmony_ci TELEPHONY_LOGI("SmsSatelliteGtest::UnRegisterSmsNotify_0001 -->"); 145e5d0e473Sopenharmony_ci sptr<MockIRemoteObject> remote = new (std::nothrow) MockIRemoteObject(); 146e5d0e473Sopenharmony_ci SatelliteSmsProxy proxy(remote); 147e5d0e473Sopenharmony_ci 148e5d0e473Sopenharmony_ci int32_t ret = proxy.UnRegisterSmsNotify(slotId_, RadioEvent::RADIO_SEND_SMS); 149e5d0e473Sopenharmony_ci ASSERT_EQ(remote->requestCode_, ToCode(SatelliteSmsServiceInterfaceCode::UNREGISTER_SMS_NOTIFY)); 150e5d0e473Sopenharmony_ci ASSERT_EQ(ret, TELEPHONY_SUCCESS); 151e5d0e473Sopenharmony_ci} 152e5d0e473Sopenharmony_ci 153e5d0e473Sopenharmony_ci/** 154e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsSatelliteGtest_SendSms_0001 155e5d0e473Sopenharmony_ci * @tc.name send sms 156e5d0e473Sopenharmony_ci * @tc.desc Function test 157e5d0e473Sopenharmony_ci */ 158e5d0e473Sopenharmony_ciHWTEST_F(SmsSatelliteGtest, SendSms_0001, Function | MediumTest | Level2) 159e5d0e473Sopenharmony_ci{ 160e5d0e473Sopenharmony_ci TELEPHONY_LOGI("SmsSatelliteGtest::SendSms_0001 -->"); 161e5d0e473Sopenharmony_ci sptr<MockIRemoteObject> remote = new (std::nothrow) MockIRemoteObject(); 162e5d0e473Sopenharmony_ci SatelliteSmsProxy proxy(remote); 163e5d0e473Sopenharmony_ci 164e5d0e473Sopenharmony_ci SatelliteMessage message; 165e5d0e473Sopenharmony_ci int32_t ret = proxy.SendSms(slotId_, RadioEvent::RADIO_SEND_SMS, message); 166e5d0e473Sopenharmony_ci ASSERT_EQ(remote->requestCode_, ToCode(SatelliteSmsServiceInterfaceCode::SEND_SMS)); 167e5d0e473Sopenharmony_ci ASSERT_EQ(ret, TELEPHONY_SUCCESS); 168e5d0e473Sopenharmony_ci} 169e5d0e473Sopenharmony_ci 170e5d0e473Sopenharmony_ci/** 171e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsSatelliteGtest_SendSmsMoreMode_0001 172e5d0e473Sopenharmony_ci * @tc.name send sms more 173e5d0e473Sopenharmony_ci * @tc.desc Function test 174e5d0e473Sopenharmony_ci */ 175e5d0e473Sopenharmony_ciHWTEST_F(SmsSatelliteGtest, SendSmsMoreMode_0001, Function | MediumTest | Level2) 176e5d0e473Sopenharmony_ci{ 177e5d0e473Sopenharmony_ci TELEPHONY_LOGI("SmsSatelliteGtest::SendSmsMoreMode_0001 -->"); 178e5d0e473Sopenharmony_ci sptr<MockIRemoteObject> remote = new (std::nothrow) MockIRemoteObject(); 179e5d0e473Sopenharmony_ci SatelliteSmsProxy proxy(remote); 180e5d0e473Sopenharmony_ci 181e5d0e473Sopenharmony_ci SatelliteMessage message; 182e5d0e473Sopenharmony_ci int32_t ret = proxy.SendSmsMoreMode(slotId_, RadioEvent::RADIO_SEND_SMS_EXPECT_MORE, message); 183e5d0e473Sopenharmony_ci ASSERT_EQ(remote->requestCode_, ToCode(SatelliteSmsServiceInterfaceCode::SEND_SMS_MORE_MODE)); 184e5d0e473Sopenharmony_ci ASSERT_EQ(ret, TELEPHONY_SUCCESS); 185e5d0e473Sopenharmony_ci} 186e5d0e473Sopenharmony_ci 187e5d0e473Sopenharmony_ci/** 188e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsSatelliteGtest_SendSmsAck_0001 189e5d0e473Sopenharmony_ci * @tc.name send sms ack 190e5d0e473Sopenharmony_ci * @tc.desc Function test 191e5d0e473Sopenharmony_ci */ 192e5d0e473Sopenharmony_ciHWTEST_F(SmsSatelliteGtest, SendSmsAck_0001, Function | MediumTest | Level2) 193e5d0e473Sopenharmony_ci{ 194e5d0e473Sopenharmony_ci TELEPHONY_LOGI("SmsSatelliteGtest::SendSmsAck_0001 -->"); 195e5d0e473Sopenharmony_ci sptr<MockIRemoteObject> remote = new (std::nothrow) MockIRemoteObject(); 196e5d0e473Sopenharmony_ci SatelliteSmsProxy proxy(remote); 197e5d0e473Sopenharmony_ci 198e5d0e473Sopenharmony_ci int32_t ret = proxy.SendSmsAck(slotId_, SMS_EVENT_NEW_SMS_REPLY, true, AckIncomeCause::SMS_ACK_RESULT_OK); 199e5d0e473Sopenharmony_ci ASSERT_EQ(remote->requestCode_, ToCode(SatelliteSmsServiceInterfaceCode::SEND_SMS_ACK)); 200e5d0e473Sopenharmony_ci ASSERT_EQ(ret, TELEPHONY_SUCCESS); 201e5d0e473Sopenharmony_ci} 202e5d0e473Sopenharmony_ci} // namespace Telephony 203e5d0e473Sopenharmony_ci} // namespace OHOS