/*
 * Copyright (C) 2024 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include "gtest/gtest.h"
#define private public
#define protected public
#include "ims_sms_client.h"
#include "ims_sms_proxy.h"
#include "ims_sms_callback_stub.h"
#include "mock/mock_ims_core_service_interface.h"
#include "mock/mock_ims_sms_callback_interface.h"
#include "mock/mock_ims_sms_interface.h"
#include "mock/mock_remote_object.h"
#include "sms_persist_helper.h"

namespace OHOS {
namespace Telephony {
using namespace testing::ext;

class SmsImsServiceInteractionTest : public testing::Test {
public:
    static void SetUpTestCase();
    static void TearDownTestCase();
    void SetUp();
    void TearDown();
};
void SmsImsServiceInteractionTest::SetUpTestCase() {}

constexpr uint32_t EVENT_RELEASE_DATA_SHARE_HELPER = 10000;
void SmsImsServiceInteractionTest::TearDownTestCase()
{
    DelayedSingleton<SmsPersistHelper>::GetInstance()->RemoveEvent(EVENT_RELEASE_DATA_SHARE_HELPER);
}
void SmsImsServiceInteractionTest::SetUp() {}
void SmsImsServiceInteractionTest::TearDown() {}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_001
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_001, Function | MediumTest | Level1)
{
    sptr<ImsSmsInterface> pImsSms = new MockImsSms();
    DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsProxy_ = pImsSms;
    DelayedSingleton<ImsSmsClient>::GetInstance()->Init();
    DelayedSingleton<ImsSmsClient>::GetInstance()->GetImsSmsProxy();
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->IsConnect(), true);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_002
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_002, Function | MediumTest | Level1)
{
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->RegisterImsSmsCallback(), TELEPHONY_ERR_LOCAL_PTR_NULL);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_003
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_003, Function | MediumTest | Level1)
{
    sptr<MockImsSms> pImsSms = new MockImsSms();
    pImsSms->retRegisterImsSmsCallback = 1;
    DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsProxy_ = pImsSms;
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->RegisterImsSmsCallback(), TELEPHONY_ERR_FAIL);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_004
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_004, Function | MediumTest | Level1)
{
    sptr<MockImsSms> pImsSms = new MockImsSms();
    pImsSms->retImsSendMessage = 1;
    DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsProxy_ = pImsSms;
    int32_t slotId = 0;
    ImsMessageInfo imsMessageInfo;
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->ImsSendMessage(slotId, imsMessageInfo),
        pImsSms->retImsSendMessage);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_005
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_005, Function | MediumTest | Level1)
{
    sptr<MockImsSms> pImsSms = new MockImsSms();
    pImsSms->retImsSetSmsConfig = 1;
    DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsProxy_ = pImsSms;
    int32_t slotId = 0, imsSmsConfig = 0;
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->ImsSetSmsConfig(slotId, imsSmsConfig),
        pImsSms->retImsSetSmsConfig);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_006
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_006, Function | MediumTest | Level1)
{
    sptr<MockImsSms> pImsSms = new MockImsSms();
    pImsSms->retImsGetSmsConfig = 1;
    DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsProxy_ = pImsSms;
    int32_t slotId = 0;
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->ImsGetSmsConfig(slotId), pImsSms->retImsGetSmsConfig);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_007
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_007, Function | MediumTest | Level1)
{
    int32_t slotId = 0;
    std::shared_ptr<AppExecFwk::EventHandler> handler = nullptr;
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->RegisterImsSmsCallbackHandler(slotId, handler),
        TELEPHONY_ERR_LOCAL_PTR_NULL);
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->GetHandler(slotId), handler);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_008
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_008, Function | MediumTest | Level1)
{
    int32_t slotId = 0;
    std::shared_ptr<AppExecFwk::EventHandler> handler = std::make_shared<AppExecFwk::EventHandler>();
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->RegisterImsSmsCallbackHandler(slotId, handler),
        TELEPHONY_SUCCESS);
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->GetHandler(slotId), handler);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_009
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_009, Function | MediumTest | Level1)
{
    sptr<MockImsSms> pImsSms = new MockImsSms();
    sptr<MockImsCoreService> pImsCoreService = new MockImsCoreService();
    sptr<MockImsSmsCallback> pImsSmsCallback = new MockImsSmsCallback();
    DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsProxy_ = pImsSms;
    DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsCallback_ = pImsSmsCallback;
    DelayedSingleton<ImsSmsClient>::GetInstance()->imsCoreServiceProxy_ = pImsCoreService;

    DelayedSingleton<ImsSmsClient>::GetInstance()->Clean();
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsProxy_, nullptr);
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsCallback_, nullptr);
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->imsCoreServiceProxy_, nullptr);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_010
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_010, Function | MediumTest | Level1)
{
    ImsSmsClient::SystemAbilityListener listerner;
    int32_t systemAbilityId = 0;
    std::string deviceId = "";
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->IsConnect(), false);
    listerner.OnRemoveSystemAbility(systemAbilityId, deviceId);
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->IsConnect(), false);

    sptr<MockImsSms> pImsSms = new MockImsSms();
    sptr<MockImsCoreService> pImsCoreService = new MockImsCoreService();
    sptr<MockImsSmsCallback> pImsSmsCallback = new MockImsSmsCallback();
    DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsProxy_ = pImsSms;
    DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsCallback_ = pImsSmsCallback;
    DelayedSingleton<ImsSmsClient>::GetInstance()->imsCoreServiceProxy_ = pImsCoreService;

    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->IsConnect(), true);
    listerner.OnRemoveSystemAbility(systemAbilityId, deviceId);
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->IsConnect(), false);
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsProxy_, nullptr);
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->imsSmsCallback_, nullptr);
    EXPECT_EQ(DelayedSingleton<ImsSmsClient>::GetInstance()->imsCoreServiceProxy_, nullptr);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_011
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_011, Function | MediumTest | Level1)
{
    std::unique_ptr<ImsSmsCallbackStub> imsSmsCallbackStub = std::make_unique<ImsSmsCallbackStub>();

    MessageParcel data;
    MessageParcel reply;
    MessageOption option;
    uint32_t code = static_cast<uint32_t>(ImsSmsCallbackInterfaceCode::IMS_SEND_MESSAGE);
    EXPECT_EQ(imsSmsCallbackStub->OnRemoteRequest(code, data, reply, option), TELEPHONY_ERR_DESCRIPTOR_MISMATCH);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_012
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_012, Function | MediumTest | Level1)
{
    std::unique_ptr<ImsSmsCallbackStub> imsSmsCallbackStub = std::make_unique<ImsSmsCallbackStub>();

    MessageParcel data;
    MessageParcel reply;
    MessageOption option;
    uint32_t code = static_cast<uint32_t>(1<<31);
    data.WriteInterfaceToken(ImsSmsCallbackStub::GetDescriptor());
    EXPECT_EQ(imsSmsCallbackStub->OnRemoteRequest(code, data, reply, option), IPC_STUB_UNKNOW_TRANS_ERR);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_013
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_013, Function | MediumTest | Level1)
{
    MessageParcel data;
    MessageParcel reply;
    MessageOption option;
    int32_t slotId = 0;
    int32_t imsSmsConfig = 0;
    std::unique_ptr<ImsSmsCallbackStub> imsSmsCallbackStub = std::make_unique<ImsSmsCallbackStub>();
    uint32_t code = static_cast<uint32_t>(ImsSmsCallbackInterfaceCode::IMS_GET_SMS_CONFIG);
    data.WriteInterfaceToken(ImsSmsCallbackStub::GetDescriptor());
    data.WriteInt32(slotId);
    data.WriteInt32(imsSmsConfig);
    EXPECT_EQ(imsSmsCallbackStub->OnRemoteRequest(code, data, reply, option), TELEPHONY_SUCCESS);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_014
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_014, Function | MediumTest | Level1)
{
    std::unique_ptr<ImsSmsCallbackStub> imsSmsCallbackStub = std::make_unique<ImsSmsCallbackStub>();

    RadioResponseInfo radioResponseInfo;
    MessageParcel data;
    MessageParcel reply;
    MessageOption option;
    int32_t slotId = 0;
    uint32_t code = static_cast<uint32_t>(ImsSmsCallbackInterfaceCode::IMS_SEND_MESSAGE);
    data.WriteInterfaceToken(ImsSmsCallbackStub::GetDescriptor());
    data.WriteInt32(slotId);
    data.WriteRawData(&radioResponseInfo, sizeof(RadioResponseInfo));
    EXPECT_EQ(imsSmsCallbackStub->OnRemoteRequest(code, data, reply, option), TELEPHONY_SUCCESS);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_015
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_015, Function | MediumTest | Level1)
{
    std::unique_ptr<ImsSmsCallbackStub> imsSmsCallbackStub = std::make_unique<ImsSmsCallbackStub>();

    SendSmsResultInfo sendSmsResultInfo;
    MessageParcel data;
    MessageParcel reply;
    MessageOption option;
    int32_t slotId = 0;
    uint32_t code = static_cast<uint32_t>(ImsSmsCallbackInterfaceCode::IMS_SEND_MESSAGE);
    data.WriteInterfaceToken(ImsSmsCallbackStub::GetDescriptor());
    data.WriteInt32(slotId);
    data.WriteRawData(&sendSmsResultInfo, sizeof(SendSmsResultInfo));
    EXPECT_GE(imsSmsCallbackStub->OnRemoteRequest(code, data, reply, option), TELEPHONY_SUCCESS);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_016
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_016, Function | MediumTest | Level1)
{
    std::unique_ptr<ImsSmsCallbackStub> imsSmsCallbackStub = std::make_unique<ImsSmsCallbackStub>();

    RadioResponseInfo radioResponseInfo;
    MessageParcel data;
    MessageParcel reply;
    MessageOption option;
    int32_t slotId = 0;
    uint32_t code = static_cast<uint32_t>(ImsSmsCallbackInterfaceCode::IMS_SET_SMS_CONFIG);
    data.WriteInterfaceToken(ImsSmsCallbackStub::GetDescriptor());
    data.WriteInt32(slotId);
    data.WriteRawData(&radioResponseInfo, sizeof(RadioResponseInfo));
    EXPECT_EQ(imsSmsCallbackStub->OnRemoteRequest(code, data, reply, option), TELEPHONY_SUCCESS);
    DelayedSingleton<ImsSmsClient>::DestroyInstance();
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_017
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_017, Function | MediumTest | Level1)
{
    sptr<MockRemoteObject> sptrRemoteObject = nullptr;
    std::unique_ptr<MockImsSmsProxy> imsSmsProxy = std::make_unique<MockImsSmsProxy>(sptrRemoteObject);

    int32_t slotId = 0;
    ImsMessageInfo imsMessageInfo;
    EXPECT_EQ(imsSmsProxy->ImsSendMessage(slotId, imsMessageInfo), TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_018
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_018, Function | MediumTest | Level1)
{
    sptr<MockRemoteObject> sptrRemoteObject = new MockRemoteObject();
    sptrRemoteObject->retSendRequest = 0;
    std::unique_ptr<MockImsSmsProxy> imsSmsProxy = std::make_unique<MockImsSmsProxy>(sptrRemoteObject);

    int32_t slotId = 0;
    ImsMessageInfo imsMessageInfo;
    EXPECT_EQ(imsSmsProxy->ImsSendMessage(slotId, imsMessageInfo), 0);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_019
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_019, Function | MediumTest | Level1)
{
    sptr<MockRemoteObject> sptrRemoteObject = new MockRemoteObject();
    sptrRemoteObject->retSendRequest = -1;
    std::unique_ptr<MockImsSmsProxy> imsSmsProxy = std::make_unique<MockImsSmsProxy>(sptrRemoteObject);

    int32_t slotId = 0;
    ImsMessageInfo imsMessageInfo;
    EXPECT_EQ(imsSmsProxy->ImsSendMessage(slotId, imsMessageInfo), TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_020
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_020, Function | MediumTest | Level1)
{
    sptr<MockRemoteObject> sptrRemoteObject = new MockRemoteObject();
    sptrRemoteObject->retSendRequest = 0;
    std::unique_ptr<MockImsSmsProxy> imsSmsProxy = std::make_unique<MockImsSmsProxy>(sptrRemoteObject);

    int32_t slotId = 0;
    int32_t imsSmsConfig = 0;
    EXPECT_EQ(imsSmsProxy->ImsSetSmsConfig(slotId, imsSmsConfig), 0);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_021
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_021, Function | MediumTest | Level1)
{
    sptr<MockRemoteObject> sptrRemoteObject = new MockRemoteObject();
    sptrRemoteObject->retSendRequest = 0;
    std::unique_ptr<MockImsSmsProxy> imsSmsProxy = std::make_unique<MockImsSmsProxy>(sptrRemoteObject);

    int32_t slotId = 0;
    EXPECT_EQ(imsSmsProxy->ImsGetSmsConfig(slotId), 0);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_022
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_022, Function | MediumTest | Level1)
{
    sptr<MockRemoteObject> sptrRemoteObject = nullptr;
    std::unique_ptr<MockImsSmsProxy> imsSmsProxy = std::make_unique<MockImsSmsProxy>(sptrRemoteObject);
    EXPECT_EQ(imsSmsProxy->RegisterImsSmsCallback(nullptr), TELEPHONY_ERR_ARGUMENT_INVALID);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_023
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_023, Function | MediumTest | Level1)
{
    sptr<MockRemoteObject> sptrRemoteObject = nullptr;
    std::unique_ptr<MockImsSmsProxy> imsSmsProxy = std::make_unique<MockImsSmsProxy>(sptrRemoteObject);
    sptr<MockImsSmsCallback> pImsSmsCallback = new MockImsSmsCallback();
    EXPECT_EQ(imsSmsProxy->RegisterImsSmsCallback(pImsSmsCallback), TELEPHONY_ERR_WRITE_DATA_FAIL);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_024
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_024, Function | MediumTest | Level1)
{
    sptr<MockRemoteObject> sptrRemoteObject = new MockRemoteObject();
    std::unique_ptr<MockImsSmsProxy> imsSmsProxy = std::make_unique<MockImsSmsProxy>(nullptr);
    sptr<MockImsSmsCallback> pImsSmsCallback = new MockImsSmsCallback();
    pImsSmsCallback->retRemoteObject = sptrRemoteObject;
    EXPECT_EQ(imsSmsProxy->RegisterImsSmsCallback(pImsSmsCallback), TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_025
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_025, Function | MediumTest | Level1)
{
    sptr<MockRemoteObject> sptrRemoteObject = new MockRemoteObject();
    sptrRemoteObject->retSendRequest = 0;
    std::unique_ptr<MockImsSmsProxy> imsSmsProxy = std::make_unique<MockImsSmsProxy>(sptrRemoteObject);

    sptr<MockImsSmsCallback> pImsSmsCallback = new MockImsSmsCallback();
    pImsSmsCallback->retRemoteObject = sptrRemoteObject;
    EXPECT_EQ(imsSmsProxy->RegisterImsSmsCallback(pImsSmsCallback), 0);
}

/**
 * @tc.number   Telephony_SmsImsServiceInteractionTest_smsImsServiceInteractionTest_026
 * @tc.name     smsServiceProxyTest_001
 * @tc.desc     Function test
 */
HWTEST_F(SmsImsServiceInteractionTest, smsImsServiceInteractionTest_026, Function | MediumTest | Level1)
{
    sptr<MockRemoteObject> sptrRemoteObject = new MockRemoteObject();
    sptrRemoteObject->retSendRequest = -1;
    std::unique_ptr<MockImsSmsProxy> imsSmsProxy = std::make_unique<MockImsSmsProxy>(sptrRemoteObject);

    sptr<MockImsSmsCallback> pImsSmsCallback = new MockImsSmsCallback();
    pImsSmsCallback->retRemoteObject = sptrRemoteObject;
    EXPECT_EQ(imsSmsProxy->RegisterImsSmsCallback(pImsSmsCallback), TELEPHONY_ERR_IPC_CONNECT_STUB_FAIL);
}
}
}